ZJOI2021 游记
Day1
没有给每一道题分别建子文件夹,爆零了
算了还是简单写一下吧。
8:25
下发了密码
开题一看 T2T3 都不会,T1 好像不难。
8:30
开始敲代码。
8:50
发现题目看错了,没有看到 \(m\) 的限制。
仔细思考了一下好像又会了,枚举最小值在什么位置,然后第一次跑是 \(\rm min\) 在 \(a\) 数组里的,第二次交换 \(a\) 和 \(b\),\(m = n - m\) 去跑 \(\rm min\) 在 \(b\) 数组里的。
然后中间的东西用优先队列去随便搞搞即可。
10:00
经过长时间的调试终于过了前两个样例。
第三个样例输出十分离谱?
10:20
发现自己犯了十分 zz
的错误,但是输出更离谱了。
冷静分析发现自己做法假了,\(\rm min\) 在 \(b\) 数组里的不能这么做,要换种做法,然后又去胡了个做法。
11:00
新做法过了小样例和第三个样例,但是没有过第二个。
11:20
冷静分析发现自己做法又假了,于是把那个对于 \(\rm min\) 在 \(b\) 数组的部分给删掉了,由于脑子快要爆炸了决定不管 \(\rm T1\) 了,如果后面又可做题没做就可惜了。
然后 \(\rm T2\) 和 \(\rm T3\) 都仔细思考了一下,觉得 \(\rm T2\) 更可做一些就去搞 \(\rm T2\)。
11:40
如果枚举第一行和第一列,然后设 \(f_{x, y} = \sum\limits_{i = 1}^{x} \sum\limits_{j = 1}^{y} b_{i, j} (-1)^{x+y-i-j}\)。
那么可以发现 \(\rm T2\) 的一个性质:
\(a\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(...\) |
---|---|---|---|---|---|
\(y_1\) | \(f_{1,1}-x_1-y_1-a\) | \(f_{1,2} -x_2 +y_1+a\) | \(f_{1,3}-x_3-y_1-a\) | \(f_{1,4}-x_4+y_1+a\) | \(...\) |
\(y_2\) | \(f_{2,1}+x_1-y_2+a\) | \(f_{2,2}+x_2+y_2-a\) | \(f_{2,3}+x_3-y_2+a\) | \(f_{2,4}+x_4+y_2-a\) | \(...\) |
\(y_3\) | \(f_{3,1}-x_1-y_3-a\) | \(f_{3,2} -x_2 +y_3+a\) | \(f_{3,3}-x_3-y_3-a\) | \(f_{3,4} -x_4 +y_3+a\) | \(...\) |
\(y_4\) | \(f_{4,1}+x_1-y_4+a\) | \(f_{4,2}+x_2+y_4-a\) | \(f_{4,3}+x_3-y_4+a\) | \(f_{4,4}+x_4+y_4-a\) | \(...\) |
\(...\) | \(...\) | \(...\) | \(...\) | \(...\) | \(...\) |
于是分行列的奇偶性讨论一下就是一个线性规划问题了。
但是这个表格看上去有很优美的性质?
12:00
发现:
对于 \(x_i\),令 \(X_i = \begin{cases} a+x_i \; i\equiv 1 \pmod 2 \\ a-x_i\; i\equiv 0 \pmod 2 \end{cases}\)
对于 \(y_i\),令 \(Y_i = \begin{cases} -y_i \; i\equiv 1 \pmod 2 \\ y_i\; i\equiv 0 \pmod 2 \end{cases}\)
然后就是一个差分约束问题了。
疯狂敲代码。
12:30
写完了,感觉来不及调。
12:55
终于过了样例。
手忙脚乱地加了个文操,把代码放到文件夹里。
12:58
发现自己 T2 有个调试没删,赶快删了。
然后比赛就结束了,T3 的暴力也没时间打。
13:??
听说自己又把文件夹建错了,回忆了一下确实,爆零了
Day2
面到了神 yzc2005 和 ylwang /se
8:20
看了眼题,T1 大数据结构,T2 小清新 \(\rm DP\),T3 貌似是科技题?
8:30
决定正开(
T1 很像 \(\rm XJ\) 模拟赛的一道题,但是那场模拟赛太毒瘤了还没有讲题就没去补。。。
想了想只会 \(\Theta(n \log^2 n)\),但是想了想又假了,变成了 \(\Theta(n \log^3 n)\)。
9:20
写完了?
写了 \(\rm 4.5k\)。。。不知道要调多久。。。
9:40
过第一和第二个样例了,但是第三个样例 \(\rm RE\) 力!!!!1
点开数据一看,是个类似于链的东西,需要开栈。但是我发现我不会开栈,于是就测不了了。
写了个拍子,大概在 \(10:20\) 的时候拍上了。测了下随机数据都要跑 4s,怕不是要 T 非。
10:50
这个 T2 感觉很简单,懒得拍了就去看看 T3 。
T3 的 \(\Theta(nmq)\) 暴力就是把每一个点删掉跑 bfs,但是总感觉这个可以 \(bitset\) 优化。
想了半天无果,于是写完暴力就跑了。
12:00
啊我好像会 T1 的 \(\Theta(n\log^2n)\) 的了。
7k 的代码,没调出来。
13:00
我 T3 树的分忘记写了 /dk
简单思考了一下 T1,貌似把我的 lower_bound 查表换成哈希表就是 \(\Theta(n \log^2 n)\) 了,那是我不太行。
但是如果这个时候再加我最后想加的优化(链顶向下的一段用主席树做)并用 \(k\) 叉树就是 \(\Theta(\frac{n \log^2 n}{\log\log n})\) 的了(在线)。
不过我好像没有去往离线算法方面想,说不定有更优的?
估分是 \([25, 100] + 100 + 30 = [155, 230]\)(这里只考虑卡常问题)
接着就是发现自己 D2T3 数组开小了(test1 和 test2 挂了,我的空间和询问多少有关)。
D1T2 忘了把 \(dis\) 数组请空(尽管本来也爆零了233)
upd :确实有更优的,离线倍增/点分 好像都可以 \(\Theta(n \log n)\)
恭喜 hehezhou 成为 \(\rm A\) 队队长!!!!!!!1
出分了。。。