CF妙题口胡

Aroma's Search

由于坐标增长得很快,越到后面越稀疏,所以我们贪心地先往前走,再往后走。

我们只需要处理出所有再 \(t\) 之内能走到的点,最多 \(\log_2t\) 个。

Air Conditioner

如果第 \(i\) 个时间,空调可以开在 \([L,R]\),那么 \(d\) 秒后空调可以开在 \([L-d,R+d]\)

以此我们将每次的空调区间与顾客区间做交,如果为空了,那么为 NO,否则我们为了让空调适应顾客,让空调区间变成这个交。

Happy New Year

先离散化后将线段都排序。线段 \([l,r]\) 的存储,可以做成 \(l,i\)\(r+1,-i\)。扫描每一个孩子,因为每个孩子被覆盖的线段不超过 \(8\) 个,所以我们可以将线段 \(8\) 循环编号。

状压,设 \(f(i,s)\) 为第 \(i-1\) 个孩子(离散化后)到第 \(i\) 个孩子(中间还会有许多被去的点)覆盖状态为 \(s\)

如果这段的起点是添加咒语,设新咒语在状压中的位置为 \(k\)

  • \(s\) 的第 \(k\) 位为 \(1\),则 \(f(i,s)=f(i-1,\text{s的第k位设为0})+[s有奇数个1]\times \text{这段的长度}\)

  • \(s\) 的第 \(k\) 位为 \(0\),意味这我们没有施咒语,则 \(f(i,s)=f(i-1,s)+[s有奇数个1]\times \text{这段的长度}\)

如果这段的起点是解除咒语,设新咒语在状压中的位置为 \(k\)

  • \(s\) 的第 \(k\) 位为 \(1\),不可能存在这种情况,因为我们已经解除了啊。

  • \(s\) 的第 \(k\) 位为 \(0\),则 \(f(i,s)=\max\{f(i-1,\text{s的第k位设为1}),f(i-1,s)\}+[s有奇数个1]\times \text{这段的长度}\)

Present

按位计算,假设现在在算第 \(k\) 位对答案的贡献,那么我们只用考虑每个数的末 \(k\) 位即可,这可以用取模,设 \(b_i=a_i\mod 2^{k+1}-1\)

如果第 \(k\) 位对答案有贡献,说明有奇数对 \(b_i+b_j\) 的第 \(k\) 位为 \(1\)

也就是说明 \(2^k\le b_i+b_j\le 2^{k+1}-1\) 或者出现进位的情况,即 \([2^k+2^k\times 2,2\times(2^{k+1}-1)]\)

排序后走指针即可,可以分别两次走指针后相加。

Instant Noodles

\(S(i)\) 表示点 \(i\) 左边与它相连的点集合。

\(S(i)=S(j)\),可以合并权值,答案即为原先点权和。

然后再求 gcd。

Ehab the Xorcist

由于异或是不进位加法,所以当 \(u>v\) 时,无解。

同时我们可以推出 \(a+b=a\oplus b+2(a\&b)\),也就是把要移位的地方手动移位了。

于是 \(a+b-a\oplus b=2(a\&b)\),设 \(\Delta=v-u\)

\(\Delta\) 为奇数,无解。

\(\Delta=0\),若 \(u=v=0\),直接构造空数组,否则答案就是 \([u]\)

\(\Delta>0\),可以构造 \([\frac{\Delta}{2},\frac{\Delta}{2},u]\)\([\frac{\Delta}{2},\frac{\Delta}{2}\oplus u]\)

Edge Weight Assignment

由于 \(1\oplus2\oplus3=0\),所以最小权值个数一定是 \(1\)\(3\)

posted @ 2023-09-08 15:57  include_c  阅读(27)  评论(0)    收藏  举报