AGC015

D A or...or B Problem

\(l,r\) 的公共前缀可以先扔掉,设 \(r\) 的最高位为 \(x\),次高位为 \(y\)

\([l,2^x)\)\(2^x\) 可以拼出 \([l+2^x,2^{x+1})\)

\([2^x,2^x+2^y)\)\(2^y+2^x\) 可以拼出 \([2^x,2^x+2^{y+1})\)

把这两个区间和 \([l,r]\) 并起来求区间并即可。

E Mr.Aoki Incubator

\(v\) 排序,对于每个 \(i\) 找到最小的 \(p\) 使得 \(x_p\ge x_i\),设 \(l_i=p\),同理设 \(r_i\)

\(i\) 能够染的点有且仅有 \([l_i,r_i]\) 中的点。

image

对于 \([l_i,i]\)\(x\le x_i\) 这些点,会和 \(i\) 相遇;\(x>x_i\) 这些点会和 \(p\) 相遇。\(r\) 同理。

对于 \([1,l_i)\) 中的点,都满足 \(x<x_i\),且 \(v<v_p,v_i\),所以这些点怎么都不会被 \(i\) 染色。

求出 \(l_i,r_i\) 后,问题变为了选几个区间使得并为 \([1,n]\),dp 解决。

\(f_i\) 表示选了 \(i\),且覆盖到 \([1,r_i]\) 的方案数,能转移的 \(j\) 要满足 \(r_j>=l_i-1\),根据定义很显然 \(l_i,r_i\) 是单调的,所以维护一个指针再前缀和可以求出答案。

F Kenus the Ancient Greek

https://www.luogu.com.cn/blog/biliilib/solution-at2384

posted @ 2022-04-24 20:35  oisdoaiu  阅读(22)  评论(0编辑  收藏  举报