做题记录
P5354 [Ynoi2017] 由乃的 OJ
Abstract Ynoi.
不难想到可以先使用树剖维护这个东西。
由于每一个二进制位是互相独立的,所以可以记录当前位是 0/1 在当前区间从左到右或从右到左后能否成为 1。可以开 k 棵线段树维护,复杂度 。
仔细观察 pushup
,可以将 k 棵压成一颗,记录当前区间从左往右或从右往左后的。
AT_agc027_e [AGC027E] ABBreviate
证明题?
将 a -> 1,b -> 2,则 结果不变。。
结论(不会证明):s 变成字符 c 的 充要条件 是 且 s 有相邻FDSA
相同(即不为 ababa... 或 babab..)。
前面贪心匹配,注意最后剩下的 p 值为 。
dp 即可。使用刷表发, 表示前 个数的答案,每次在当前序列末尾加上一个 a 或 b,注意加答案时要保证剩下的 p 值为 0。。
CF1267H Help BerLine
CF3200
《面对做法构造题目》
奇妙构造+奇妙证明?
考虑这件事情有一个明显的必要条件是:任何时刻相邻两个亮着的灯必须颜色不同。
对于时间到这枚举,可以使用 set 维护前驱和后继,当 时,,。
cyz说 可以归纳证明这也是充要条件。
也可以证明, 的范围是 。
然后就做完了。。。
P3233 [HNOI2014] 世界树
码量虚树,为何不改?
套路建虚树,暴力是好做的,思考如何在虚树上做。
答案 = 为在虚树上的点的贡献 + 不在虚树上的点的贡献。
设距离节点 最近的关键节点为 。
-
在虚树上的点
两遍 dfs 可以求出虚树上距离当前点最近的关键点,贡献直接加就可以了。
-
不在虚树上的点
Ⅰ 在虚树节点 的子树并且这个子树中没有关键点。
。直接统计即可
Ⅱ 在虚树节点 和 这条链上。
① 。则 ,直接统计即可。
② 。二分出这条链上的 的断点 ,则分开统计两条链即可。
复杂度是 。
AT_agc048_d [AGC048D] Pocky Game
又是证明题?
自行模拟或证明:只可能有两种操作,取 个石子或取 堆石子。
为 没动,让 Firstleft 赢, 的最小值。 为 没动,让 Secondrigtht 赢, 的最小值。
若 ,则 Secondright 赢,否则 Firstleft 赢。