Loading

【题解】CTT 2020 Day 3

A. 计数鸡

考虑 \(\sum\limits_{i}\sum\limits_{j>i}[p_i\geq p_j]+[(p_i+h_i)\geq q_j]\),前部分是逆序对,而偶数让人想到行列式。即 \(M_{i,j}\) 表示 \(p_{i}=j\) 的系数,带入 \([(p_i+h_i)\geq q_j]\) 只是一个 \(1/-1\) 的问题。

提交记录:Submission #80360 - QOJ.ac

B. Perotation

倒序操作,发现 \(f_i=\sum\limits_j [p_j<p_i]\) 的奇偶性是不变的,猜测条件就是充要的。

考虑时间分块,用树状数组倒着扫。如果是修改关键点,那么贡献直接计算,每次倒着回去,将修改模拟回去即可。如果是非修改段,考虑每个修改关键值,维护 \(mx_0,mx_1\) 表示当前奇偶性下的最大位置。修改就只要打标记,然后每次查询的时候,将所有值域段问一遍即可(即关键点之间的段)。

但查询次数不确定,用随机权值异或,来描述一个状态。只有当两个状态对不上,才有 \(f_i\) 是奇数的情况,进行询问。否则没必要询问。于是询问次数变成 \(O(n)\)

时间复杂度 \(O(n\sqrt{n\log n})\)\(\log n\) 只有每次树状数组倒着扫,还有关键点处撤销的修改。常数较大,所以其实未能通过。不想卡常了。

提交记录:Submission #80458 - QOJ.ac

其实每次只要考虑新的修改,就可以避免掉树状数组,做到 \(O(n\sqrt{n})\) 。但我不太想写了。

C. 树特卡克林

Ynoi TEST_63 。

posted @ 2023-02-26 21:37  Qiuly  阅读(198)  评论(0编辑  收藏  举报