「 游记 」CSP-S 2021

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\)

上一篇:DouBan FM API


下一篇:安全计算环境-(三)Linux服务器-1