CSP-S 2021 比赛时间 \(2021.10.23 - 14:30 \sim 18:30\)
赛时
\(14:30 \sim 14:40\)
\(10 \min\) 粗略地看了一下所有题目,感觉每道题都只能打暴力
\(14:40 \sim 14:55\)
\(15 \min\) 根据小样例完成 \(T1\) 暴力的调试,成功通过大样例(\(\mathrm{airport3.in}\))
只不过暴力是 \(O(n^2 \log n)\) 的,感觉会被卡掉
\(14:55 \sim 15:30\)
想了 \(35 \min\) 的 \(T1\) 正解,什么都没想出来(根据复杂度只想了 二分,二分套二分,或许正解都不是这些算法吧)
\(15:30 \sim 15:50\)
再次读完题后感觉是 区间 \(dp\) (因为 \(n \leq 500\),又因为括号序列一般都是用 区间 \(dp\) 处理),于是顺着思路打了 \(T2\) 的 \(dp\)
打到中途发现推的式子好像是错的,于是直接跳过了
\(15:50 \sim 16:25\)
想了 \(10 \min\) 左右,有思路了,但是之间一个步骤没得到证明,所以无解的情况会跟暴力一样 \(L\) 和 \(R\) 都会跑一次,不过时间复杂度是由数据决定的,有解是 \(O(n)\),无解最坏是 \(O(2^n)\),但是调试过了大样例
\(16:25 \sim 17:00\)
思考了 \(5 \min\) 感觉没什么思路,打了个随机染色,过了小样例就以为小数据都能过,就没有打暴力
\(17:00 \sim 17:50\)
回去想 \(T2\),又思考了 \(10 \min\),感觉可以 \(dp\) 了,分成了 ***
,(...)
,(...)(...)(...)
,***(...)(...)
,(...)(...)***
\(5\) 种情况 \(dp\) 转移,最后调过了大样例
特殊说明:中途有一次样例 \(2\) 输出 \(22\):是因为 ()*()()
这种情况算了 \(2\) 次;当时试探性地改了一个转移的变量,没想到就过了,后面也发现是算重了,或许能过也是偶然吧
\(17:50 \sim 18:10\)
再次思考 \(T1\),真的想不出来怎么做了
\(18:10 \sim 18:20\)
检查了一下 freopen
,变量名,再次测试了一遍每道题的所有大小样例
\(18:20 \sim 18:30\)
感觉也打不出什么了,重复检查代码等待考试结束
赛后
T1 廊桥分配
纯粹的暴力,没有什么说的
洛谷自测: \(40\)(正常)
\(\mathrm{Hydro \ OJ}\) 测试: \(60\)(数据问题)
T2 括号序列
应该是正解 \(dp\),也没有什么说的
洛谷自测: \(100\)
\(\mathrm{Hydro \ OJ}\) 测试: \(100\)
T3 回文
发现了一个致命错误:输出的字符串没有初始化,为了简单打输出,就没有用 for
,直接用了 %s
,但是我没有清空字符串,如果多组输入出现 \(n\) 递减,我就会 WA,因为答案会输出之前残留的字符
至于为什么能过大样例,因为大样例的 \(n\) 全都是 \(20\)(以后不能相信大样例)
洛谷自测: \(8\)(可怜,听说暴力也能过洛谷的数据)
\(\mathrm{Hydro \ OJ}\) 测试: \(48\)(数据问题)
T4 交通规划
随机染色也算暴力吧,还是没有什么说的(为什么一个点都过不了啊,还不如打暴力呢)
洛谷自测: \(0\)(可怜)
\(\mathrm{Hydro \ OJ}\) 测试: \(0\)(可怜)
自我评价
\(T1\) 其实是想到了正解的,即考虑每次多一个廊桥的贡献,我以为每次都要全部遍历一遍就是 \(n^2\) 的,所以就没有打(奇怪的是,\(O(n^2)\) 也比 暴力的 \(O(n^2 \log n)\) 更优,我为什么不打 \(n^2\) 呢)
其实之前已经在廊桥里面的飞机可以不遍历的,可以用个数据结构维护,每个飞机只会遍历一次,所以是 \(O(n \times \log n)\)(看数据结构的复杂度咯,set
是 \(O(\log n)\) 的)
\(T3\) 再思考一下说不定就能打出正解了(代码里其实把一个 if
改成 else if
就是正解了),不应该犯 没初始化 这样的错误
整场比赛可能是因为 \(T1\) 还没做出来,想做出 \(T1\)(因为 \(T1\) 一般都比较简单),所以没有把时间留给对拍(如果对拍了,说不定就不会出现这样的错误了)
自我预测: \(140 \sim 250\) 不等,高分可能性有点小(也不算极低,看 CCF 的数据咯)
洛谷自测: \(40 + 100 + 8 + 0 = 148\)
\(\mathrm{Hydro \ OJ}\) 测试: \(60 + 100 + 48 + 0 = 208\)