考场
一看题目就感觉不妙,果然题面都又长又恶心,没有会做的。。。
T3貌似是原题(但数据范围大多了),于是搞懂T2样例后先写T3,发现不会写。回头看T1,题面复杂的要死,其实就是扩展域并查集,手推过了样例,但代码挂了,发现是没有合并扩展域,改完就没有再管(但心里有点慌)。
T2先写了暴力,开始找规律。发现样例 \(x_i\le x_{i-1}\) 时可以二分答案,通过分别计算每个小区间的贡献 \(O(n)\)检验,推广到一般情况可以先排序。写完对拍去上厕所,回来就发现挂了。调小数据发现不能同时排序 \(x,y\),而分开也无影响,分开做就好了。对拍点时候发现暴力比正解跑得快,想了半天发现是 \(x,y\) 与 \(d\) 太接近,改了改就好了。最终拍了3k组极限数据。
最后30min继续写T3,有思路但是过不了样例。
Problem 1 漆黑列车载运数个谎言
考场
那刚学的推出关系和条件推了半天,发现一个命题的逆命题和否命题同真假(后来想起初中数学老师讲过一个命题的逆否命题与原命题正确性相同),加上题目的提示很容易想到并查集。
期望&实际
100pts
Problem 2 金色丝线将瞬间一分为二
考场
暴力显然。
发现对于前k个点,两两之间都要计算距离,即与顺序无管,而大区间又可以用小区间拼成。二分 \(k\) 并 \(O(1)\) 计算出每个小区间的贡献可 \(O(nlog_2 n)\) check。对拍全过。
期望
\(O(nlog_2^2 n)\)
100pts
实际
50pts
6~#10 WA
题解
区间不好维护,考虑点。
第 \(i\) 个点的贡献为 \(ix_i-sum_i\),\(sum_i\)表示排序后前 \(i\) 个数点和。
证明
\(ix_i-sum_i = ix_i-\sum_{1}^{i} x_i = (x_i-x_1)-...-(x_i-x_i-1)\),即算出 \(i\) 与 \(1~i\) 的距离。
Problem 3 神在夏至祭降下了神谕
考场
虽然记得是原题,但过于匆忙导致暴力分都没有拿到。
显然状态为 \(f[i]\) 表示前 \(i\) 个的方案数,则 \(f[i]=\sum_{j=0}^{i-1}f[j](|\sum_{k=j+1}^i|\le k)\),前缀和维护 \(\sum_{k=j+1}^i\)即可 \(O(1)\) 判断每个 \(j\),边界 \(f[0]=1\)。
但考场上脑子一抽,认为要从 \(j\) 转移,则 \(j\) 位置的差加上\(\sum_{k=j+1}^i\) 要小于等于 \(k\),设了二维状态,然后就一直输出 \(4\)。
期望&实际
\(O(n^2)\)
0
题解
先咕着
线段树或树状数组维护区间和,\(O(log_2^n)\) 转移。