CSP-S2 2019 游记
我简直是咸鱼,一只彻头彻尾的咸鱼。
慵懒,成为了我本次比赛的主调。
10 月 27 日晚上——也有可能是 10 月 28 日的凌晨,睡眼惺忪的我坐在书桌前,照常奋笔疾书着。作业本放回一本又拿出一本,练习材料做完一张又掏出一张,我就这样机械着循环反复着,完全看不到尽头。
在这种困倦又疲劳的情形下,我申请了停课,开始为 CSP-S2 做准备。
写完停课申请的我仿佛如释重负,用最后一点气力把作业扔到一旁,然后摊到床上,不久就睡熟了。
为期三周的训练,是缓和而有趣的。每天早上七点钟起床,慢条斯理地吃完早饭后悠闲走到学校,参加校内举行的提高模拟赛。在三个半小时里,我只愿意思考每题的满分做法,对部分分置若罔闻。倘若遇到三道简单题,被一个半小时穿了,我们便开始“指责”出题人不会出题;倘若遇到难题,思考无果或想到一种码量超级大的做法,我们便开始骂出题人毒瘤。下午原本安排的订正计划被我直接抛到脑后,跟着几个同学带着麻将,到隔壁空着的 VR 教室一起玩。一个个工作日,就在这样“欢快”的气氛中,快速地流去。
11 月 15 日,第二天就是正式比赛了,但我不想紧张,也懒得紧张。我自大地认为,凭借我的能力,两天比赛总分上 \(500\) 不在话下,考前只要尽可能放松就可以了。
11 月 16 日,CSP-S2 2019 Day1。
考点就在自己的学校,我感受到了极大的便利。不单是仅靠步行就能到考点,更是我熟悉这里键鼠的手感。如往常一样的,熟练地接受安全检查、熟练地找到自己的位置、熟练地关掉安全软件、熟练地配置好 FrC……一切都是那样熟悉与亲切。
8:30 准时开题。
看到第一题时,我被那长长的题面吓了一跳。
细细读完后,发现只需模拟题意反着推一遍就可以了,再观察一下数据范围,\(n \le 64\),那需要 \(\texttt{unsigned long long}\),输入是 \(\texttt{%llu}\)。另外就没有什么细节了,我就开始实现。
大概 8:40 的时候,过样例了。我又测了一组 \(n = 64, k = 2^{64} - 1\) 的数据,发现输出是 \(10000\dots\),感觉很有道理,就没有再管它,去看下一题了。
第二题似乎是要求括号序列数。读完题,我第一时间的反应是:
根据套路,某个点之前的括号序列不好统计,那就统计以某个点为结尾的。
根据套路,括号序列可以用一个栈维护。一个右括号可以与栈顶的左括号转移。
于是我会做序列的情况了。
根据套路,dfs 到树上的一个点 \(u\) 时,dfs 栈内所有点恰好是 \(u\) 在树上的所有祖先节点,且按照顺序排列。
于是我也会树的情况了。
又思考了细节,似乎没有的样子。
接着就开始打了,大概 8:50 的时候过了样例。然后写了个 \(\mathcal{O}(n^4)\) 的暴力作对拍,就放在一旁去看第三题。
9:00 进入第三题,似乎可以 AK 的样子。
读完题:这题还挺有意思的。\(\mathcal{O}(n \log n)\) 做法似乎很不好想。
看到 \(n \le 2000\):天哪这不是简单题吗,把贪心 + check 路径的 \(\mathcal{O}(n^3)\) 用树剖之类的东西维护一下不就做到 \(\mathcal{O}(n ^ 2 \log n)\) 了吗。
接着开始写,写了半个小时左右,发现过不了样例的第二组数据。小黄鸭调试法找不出什么问题,手玩一下才发现 \(5\) 号节点上不去,而题目要求每条边必须被删除。换句话说,我想的贪心是错的。
我无比懊悔,赛前教练无数次地提醒过,想到一个做法时,一定要仔细检查它的正确性,以及注意它是否存在细节和边界问题。在这题上,我被欲望冲昏了头脑,忽略了教练的忠告,导致了将近一个小时的时间被浪费。
我开始苦想正解。大概一个小时后,我还是没有任何思路。
11:00,我才终于决定写第三题的暴力。
根据我的经验,这样的题目,暴力应当是很好打的。在往年的 NOIP 赛场上,每题的暴力分都达到了大六七十。
\(n \le 10\),随便 \(\mathcal{O}(n!)\) 枚举一下就行。
树退化成链,贪心从小到大考虑……诶等等,一个节点似乎可以把它的权值先转移走,再赋为其它的权值……这样与先交换后跨点交换好像是等价的,那就对原序列建一个双向链表,然后维护一下贪心似乎就可以了。
我这么去写了,写了半个小时,又调不出来。而且还不知道是做法假了还是实现假了。
算了不想链了,去想想菊花。菊花似乎就是找到一个大轮换,使得排列字典序最小。那这样直接贪心找并查集维护就好了,感觉复杂度没有问题,还特别好写。
五分钟左右写完了,过了样例,\(10\) 以内的数据和暴力拍没有问题。
剩下的时间我全部在调链,始终没调出来。
最后一题 \(35\) 分收场,太难过了。我无比自闭,因为我的经历告诉我,一名出题人,尤其是在这种官方比赛里,如果出了一道难题,那么部分分一定会给非常多;这也就是说,如果一题的部分分非常少,就说明这是一道简单题,除非出题人希望被喷。
按照这种部分分水准,这题应该是一道简单题,应该又是一天全场 AK 的 Day1,又是一天没有区分度的 Day1,但我被区分了。
出考场时,出我所意料的,又如我所希冀的,我校一位 NOI 银牌大佬开始问候 T3 出题人的家人,旁边还有一群人跟着附和。
我上去打听了一下,没有一个人写出正解,也没有一个人写出链,甚至没有一个人写出菊花,全部都是 \(10\) 分。
有一位同学想出正解了,但他说细节太多代码非常难写,三个小时打不完。
有好多同学有 \(\mathcal{O}(2^n)\) 做法,但出题人没给部分分。
还有一位同学有 \(\mathcal{O}(n^5)\) 做法,但出题人也没给部分分。
我在疑惑与不解中,结束了这没有区分度的 Day1。考后把程序放到各大 OJ 的民间数据测,结果都是 \(100 + 100 + 35 = 235\)。
11 月 17 日,CSP-S2 2019 Day2。
这真的是我做过的体验最好的一套题,发自心底地说。
区分度良好,思维难度不太大,码量适中,有 AK 可能性。比 Day1 好了太多太多。
第一题,果不其然来了一道 \(998,244,353\)。我一开始想的是枚举菜品数,然后组合数计算方案,结果发现 \(a_{i, j}\) 可能不同,组合数派不上用场。
正卡壳之际,我又想起教练赛前传授我们的经验:题目给的每一个条件都至关重要,不能浪费。于是我开始考虑这个 \(\lfloor \frac{k}{2} \rfloor\) 的限制有什么特殊之处。
自然地,我想到了只会有一个数大于 \(\lfloor \frac{k}{2} \rfloor\)。也就是说,一种不合法的方案中,一定有且仅有一件主要食材超过使用限制。这使得枚举不合法方案成为了可能,容斥的做法被摆上了台面。
接着,我大胆的设计了一个状态为 \(n^3m\) 的 DP,因为我知道这肯定可以优化。果然发现有两维可以作个差分压成一维,于是复杂度就变成了 \(\mathcal{O}(n^2m)\),通过了第一题。
这时候已经接近 10:00 了,我寻思对拍很难写,时间也不太够,就懒着没有写对拍。
做完第一题后,我同时看 T2 和 T3。发现 T3 的 \(75\) 分暴力非常好写,性价比极高,就花了十几分钟写完了,过了样例。同样是没有对拍,因为太懒。
我深知,Day2T2 决定了全场比赛的成败。它不如 D1T1, D1T2, D2T1 一样自带签到属性,也不像 D1T3, D2T3 那样压轴防止 AK。作为腰部,一场比赛真正的区分度都需要在 Day2T2 这道题上体现。它往往思维量极高,极其考验选手能力。
我很快会了 \(\mathcal{O}(n^2 a_i)\) 的 DP 做法,大概有 \(24\) 分。
注意到区间和只有 \(n^2\) 种可能,我把 DP 优化到了 \(\mathcal{O}(n^3)\),大概是 \(36\) 分。
把递推式写出来,发现可以用后缀最小值优化转移,我又得到了一个 \(\mathcal{O}(n^2)\) 的做法,\(64\) 分。
这里状态就是平方的了。接着一个小时我全部在思考如何优化这里的状态数,大致思路是从分析 DP 值的单调性开始,然后试着能不能离散,用动态开点线段树去维护每一个 DP 的状态,然后线段树合并之类的整体 DP 技巧进行转移……
我还是不会,然后就果断放弃了,因为这样就算会了也打不完,只好 \(64\) 分交卷。
考后证明了,这道 Day2T2 是我最后悔的一题。
我随便问了几个同学,要么说自己看到题一眼秒掉,要么是不会高精度的拿了 \(88\)。当我问他们怎么做时,他们的回答是:“这不是睿智题吗,猜个结论就过了。虽然我不知道这个结论为什么是对的。但是你看着数据范围,显然不是个大聪明就不会往 DP 这方面去想嘛,这种 \(4 \times 10^7\) 怎么可能是 DP 呢,肯定是贪心或结论题啊。”
看来还是自己经验不够,我果然又被区分了。
Day2 结束了,民间数据测出来分数仍然是 \(100 + 64 + 75 = 239\),各 OJ 测都一样。
总分只有 \(474\),随便问个人都是 \(485, 498, 499, 504\),我哭了。
这道 Day2T2 给我留了太大的遗憾,到头来追究原因,才发现自己的失败在自己的慵懒中早已奠定。
我开始懊悔自己考前没有认真对待模拟赛,没有端正自己的考试策略。
我开始懊悔自己考前没有多刷题,积累做题套路。
我开始懊悔自己考前没有勤写题,导致写题速度偏慢。
我开始懊悔自己的懒,自己的妄自尊大。
结束了,回去学文化课了。
我感谢这次竞赛的经历,它带给我许多宝贵的东西。它让我意识到,自己作为一名普普通通的高中学生,所拥有的知识量是多么的浅薄,所了解的世界是多么的狭隘。我也从中感受到,学习是多么幸福、多么重要的一件事,只有努力学习积攒知识,才能被更多人正眼相待。未来路上,我将更加努力前行。
\[
\texttt{by Tweetuzki} \quad \mathcal{2019.11.18}
\]
CSP-S2 2019 游记的更多相关文章
- CSP/NOIP 2019 游记
Day0 打牌 Day1 \(T1\) 没开\(ull\), 不知道有几分 \(T2\) \(N^2\)暴力+链, 没搞出树上做法, \(70\)分 \(T3\) 标准\(10\)分( 感觉今年省一稳 ...
- Codechef April Challenge 2019 游记
Codechef April Challenge 2019 游记 Subtree Removal 题目大意: 一棵\(n(n\le10^5)\)个结点的有根树,每个结点有一个权值\(w_i(|w_i\ ...
- WC 2019 游记 - 败者之低语
败者之低语 WC 2019 游记 Day -1 看了一圈PKU和THU的题,感觉图像识别真有意思... 感觉非常讲道理,pku还是比thu简单一点的... 听说高二414在thu没有进面试? 震惊!( ...
- FJWC 2019 游记
FJWC 2019 游记 Day 0 春节旅游, 刚从杭州绍兴一带赶回来, 然而并没有直接飞去福州, 去了厦门再去福州, 浪费了好多时间. Day 1 酒店到学校有 \(20\) 分钟的步行路程, 感 ...
- CSP-S 2019 游记
目录 CSP-S 2019 游记 DAY -1 Day 0 Day 1 Day 2 后记 CSP-S 2019 游记 机房段子: zr(老师):yyx我看你最近不错哦(此人外号拳皇 yyx:运气好运气 ...
- 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...
- CSP 2019游记 & 退役记
扶苏让我记录他AK CSP 的事实 ZAY NB!!! "你不配" 两年半的旅行结束了,我背着满满的行囊下了车,望着毫不犹豫远去的列车,我笑着哭了,笑着翻着我的行囊-- 游记 Da ...
- CSP 2019 游记
Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...
- 【游记】CSP J/S 2019 游记
J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...
- NOIP 2019游记
Update on 2019.4.20 禁赛预定
随机推荐
- uboot中打开 debug调试信息的方法
在uboot目录下include/common.h中, 原理:只需要让 _DEBUG 的值为 1即可. 最简单的做法就是在下图第一行之前添加 #define DEBUG
- 其实每个行业都有各自的辛苦,好的程序员并不累,他们乐此不疲(见过太多在职位事业、人生方向上随转如流的人,累了疲乏了就去做别的事情了。必须有自己的坚守和立足的点,自我驱动,否则沦为在别人的体制制度中被驱赶一生)good
作者:陈柯好链接:https://www.zhihu.com/question/39813913/answer/104275537来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 编译openwrt backfire过程中出现的问题
参考的步骤如链接: http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=124604 在make menuconfig的时候出 ...
- mongoose整理笔记
一:参考学习网址 npm: https://www.npmjs.com/package/mongoose 官网API:http://mongoosejs.com/docs/guide.html 二:在 ...
- Linux环境下Redis安装和常见问题的解决
Redis是一款非常非常非常好用的缓存数据库,在保存需要定期更新的Token值,或者在保证高并发安全可靠性的场景下,基本上说是必用了. 安装过好多次Redis了,也用过阿里云Redis数据库,但是每次 ...
- 运行 jar 的问题
lib stwe.jar 同目录
- Hibernate-validate工具类,手动调用校验返回结果
引言:在常见的工程中,一般是在Controller中校验入参,校验入参的方式有多种,这里介绍的使用hibernate-validate来验证,其中分为手动和自动校验,自动校验可以联合spring,使用 ...
- css图片上加文字
第一种方法: 添加一个DIV,采用绝对定位,图片所属DIV为基准 <div style="position:relative;width:100px;height:100px;&quo ...
- 当SAP云平台account的service Marke place里找不到Machine Learning服务该怎么办
问题症状: 我在CloudFoundry环境的Service Market place里根本找不到Leonardo ML foundation这组服务. 解决方案: 进入global Account- ...
- 【leetcode】637. Average of Levels in Binary Tree
原题 Given a non-empty binary tree, return the average value of the nodes on each level in the form of ...