logo

yaohaoyou

春节

做题记录

2024-07-03 Views 做题记录830字4 min read

P5354 [Ynoi2017] 由乃的 OJ

Abstract Ynoi.

不难想到可以先使用树剖维护这个东西。

由于每一个二进制位是互相独立的,所以可以记录当前位是 0/1 在当前区间从左到右或从右到左后能否成为 1。可以开 k 棵线段树维护,复杂度 O(n×log22n×k)O(n\times \log_2^2n\times k)

仔细观察 pushup,可以将 k 棵压成一颗,记录当前区间从左往右或从右往左后的。

AT_agc027_e [AGC027E] ABBreviate

证明题?

将 a -> 1,b -> 2,则 mod3\bmod 3 结果不变。p(s)=(sia+1)mod3p(s)=\sum (s_i-a+1) \bmod 3

结论(不会证明):s 变成字符 c 的 充要条件p(s)=p(c)p(s)=p(c) 且 s 有相邻FDSA

相同(即不为 ababa... 或 babab..)。

前面贪心匹配,注意最后剩下的 p 值为 00

dp 即可。使用刷表发,dpidp_i 表示前 ii 个数的答案,每次在当前序列末尾加上一个 a 或 b,注意加答案时要保证剩下的 p 值为 0。ai=p(s[1,i])a_i=p(s[1,i])

dpnxti+1,(ai+1/2)mod3+=dpidp_{nxt_{i+1,(a_i+1/2) \bmod 3}} +=dp_i

CF1267H Help BerLine

CF3200

《面对做法构造题目》

奇妙构造+奇妙证明?

考虑这件事情有一个明显的必要条件是:任何时刻相邻两个亮着的灯必须颜色不同。

对于时间到这枚举,可以使用 set 维护前驱和后继,当 i=coli = col 时,lsti=collst_i \not=colnxti=colnxt_i \not= col

cyz说 可以归纳证明这也是充要条件。

也可以证明,colcol 的范围是 log32N\log_{\frac{3}{2}}N

然后就做完了。。。

P3233 [HNOI2014] 世界树

码量虚树,为何不改?

m3×105\sum m \le 3 \times 10^5套路建虚树,暴力是好做的,思考如何在虚树上做。

答案 = 为在虚树上的点的贡献 + 不在虚树上的点的贡献。

设距离节点 ii 最近的关键节点为 p(i)p(i)

  1. 在虚树上的点

    ​ 两遍 dfs 可以求出虚树上距离当前点最近的关键点,贡献直接加就可以了。

  2. 不在虚树上的点 xx

    ​ Ⅰ xx 在虚树节点 yy 的子树并且这个子树中没有关键点。

    p(x)=p(y)p(x)=p(y)。直接统计即可

    ​ Ⅱ xx 在虚树节点 uuvv 这条链上。

    ​ ① p(u)=p(v)p(u)=p(v)。则 p(x)=p(u)p(x)=p(u) ,直接统计即可。

    ​ ② p(u)=p(v)p(u)\not=p(v)。二分出这条链上的 pp 的断点 qq,则分开统计两条链即可。

复杂度是 O(m×log2n)O(\sum m\times \log_2n)

AT_agc048_d [AGC048D] Pocky Game

又是证明题?

自行模拟或证明:只可能有两种操作,取 11 个石子或取 11 堆石子。

fl,rf_{l,r}[l+1,r][l+1,r] 没动,让 Firstleft 赢,ala_l 的最小值。gl,rg_{l,r}[l,r1][l,r-1] 没动,让 Secondrigtht 赢, ara_r 的最小值。

a1<f1,na_1<f_{1,n},则 Secondright 赢,否则 Firstleft 赢。

EOF