Diary -「CSP 2019 J/S」 游记
\(\text{Day 0}\)
试机, 总体感觉不错, 至少不像初一时候的紧张, 毕竟是中青年选手了 ( ? )
当晚睡得挺好, 虽然是冲着一等奖去的, 但还是没有给自己过多的思想包袱.
策略
琢磨很久了.
我按照去年\(S\)组\(330\)的分数线大概估算了一下, 理想的得分状态应该是\((200^+) + (150^-)=350\). \(\text{Day 1}\) 尽力磕出一两道正解, \(\text{Day 2}\) 稳健骗暴力. 事实证明, 这样的策略对本次考试是奏效的.
\(\text{Day 1}\)
将近七点起床, 看了一眼数论和匈牙利的板子, 坐车去巴蜀. 到的时候看着门口全是八中的校服, 心里很踏实. ( 迷之主场\(buff\)? ) 和初三的同学唠了会儿磕, 也放松了一下心情.
考试开始
\(8:30\) ~ \(8:45\) 读题
通读了三道题, 整体感觉不算特别难. \(T1\)应该能打正解, \(T2\)骗分的话能拿到\(\#1\) ~ \(\#14\), \(T3\)迷之毒瘤, 只想到\(\#1~\#2\)的全排列, 一眼分\(100+70+10=180\), 感觉需要再搏一搏了.
\(8:45\) ~ \(9:15\) 写\(T1\)
二进制串的构造, 由于冲着正解, 想都没想找起了样例的规律. 有了一个循环求每一位的想法, 但始终过不了样例. 看一眼表, \(9:00\).
瞟一眼同桌 ( 貌似是西附的 ), 已经开\(T2\)了, 感觉全考场就我一个还在肝\(T1\), 特别慌.
还好, 我想起了几次数学考试考炸的经历, 不要去在乎旁人的做题进度, 伸了一个懒腰, 重新读题, 发现题面其实介绍了这种二进制串的构造方式, 于是参照题面实现了一种递归的构造方法, 过了所有样例, 稍稍开心了一下, 投身\(T2\).
\(9:15\) ~ \(11:00^+\) 写\(T2\)
首先写了性价比较高的部分分: 链.
由题目对括号匹配的介绍, 很自然地想到用\(stack\)去维护序列. 在草稿纸上手玩了几条链, 发现其实就是一个比较简单的\(DP\)就能做到\(O(n)\)求解. 不到\(20\)行代码实现了一下, 过掉了最后一组大样例 ( 一条链, \(n=5\times10^5\) ).
由于感觉\(T3\)不可做, 只能通过\(T2\)达到\(200^+\)的目标. 去厕所清了一下缓存, 开始思考\(T2\)的正解.
发现我链的处理算法可以搬到树上, 在向下搜索的时候顺便维护出从根到当前结点的\(stack\)的样子, 是否就能处理出树的情况呢?
很快否决了这个想法, 因为带着\(STL\)递归是肯定会爆栈的. 在我代码里有这样一句:
for a chain:
fix a stack.
otherwise:
for all chain on dfs tree which begins with node 1, fix a stack.
memory ???
( 不敢用中文输入法, 果断选择中式英语. )
但其实上面的思路已经很接近正解了. 我尝试在代码里引入简单的回溯思想, 这样用一个全局的栈跟随\(dfs\)的脚步维护即可. 用这种算法过了样例和\(n=50\)的大样例, 惊奇的发现\(n=5\times10^5\)的链也能用这种算法过掉, 证明空间没有太大的问题.
看了看时间, \(11:00\)过了, 由于生成一颗树比较麻烦而且没有敲树的暴力, 信仰不对拍, 开\(T3\).
\(11:00^+\) ~ \(11:40\) 写\(T3\)
我就拿\(10\)分好不好.
于是, 用\(\text{next\_permutation}\) ( 考试的时候差点背不了单词 ) 加上一堆瞎搞, 妥妥\(O(10\)分\()\), 过不了样例.
代码看了一遍又一遍, 虽然暴力也不至于过不了样例吧? 于是开始怀疑样例有锅. 手玩了样例一的\(case2\), 真的玩不出样例?!
生无可恋地重新读了好几遍题, 发现输入格式的神奇之处...
\(...\)
第二行\(n\)个整数, 第\(i~(1\le i\le n)\)个整数表示数字\(i\)初始时所在的结点编号.
\(...\)
输入的不是\(n\)个点的点权, 而是点权\(1\) ~ \(n\)所在结点编号?
改了输入, 过样例了...
垃圾出题人.
\(11:40\) ~ \(12:00\) 检查
检查得很用心, 因为也打不来更多分了.
代码无关键字, 没有编译错误或警告, \(check\).
文件输入输出, 过样例, \(check\).
文件名, 文件路径, Ctrl+S, \(check\).
检查完后几分钟就完赛了. 检查时间还是比较合适.
\(\text{Day 1}\) 反思
考完估分\(100+100?+10=210?\), \(llsw\)说他\(T2\)对了拍, 想必打的也是正解, 搞得我莫名慌张.
以后应该要谨慎一点, 不是每次都能过大样例就\(AC\), 压缩一眼题的编码时间以给这种中档题更多的检查时间.
\(J\)组的快乐时光
下午水了波\(J\)组, 虽然没能\(AK\), 但也成功自信\(++\).
\(\text{Day 2}\)
琢磨了一下分数, 感觉\(\text{Day 2}\)至少应该要\(120+\), 可能无脑骗分就可以了. 当然这是建立在\(\text{Day1T2 }AC\)的基础之上. 那么, 就当做\(\text{Day 1 }210\)分吧.
( 话说不知道为什么, 那个西附的同桌在考场外一看见我就开始膜, 难道\(210\)分很高吗? )
考试开始
\(8:30\) ~ \(8:45\) 读题
\(T1\)读了很久, 抽象出了题意, 虽然很清晰但只有爆搜的思路. \(T2\)差点认成斜优板子, 后来发现新的限制, 暂时没有思路. \(T3\)也只有一眼的\(\#1\) ~ \(\#8\)的暴力和\(\#9\) ~ \(\#11\)的链. 心里还是没底.
\(8:45\) ~ \(9:30?\) 写\(T3\)
开\(T3\), 单纯地是认为暴力好写.
随随便便\(55\)分, 跑路.
\(9:30\) ~ \(10:10?\) 写\(T1\)
考场上被\(\#1\) ~ \(\#8\)的超小数据误导了, 认为搜索就能水掉, 完全没有往\(DP\)骗分想, 更别说正解了. 这也是这两天考试唯一的失分较多的失误. 最终\(32\)分, 无奈开\(T2\).
\(10:10\) ~ \(11:40\) 写\(T2\)
开这道题的时候, 压力还是蛮大的. 目前\(32+T2+55=T2+87\), 也就是说\(T2\)大约需要骗到\(40\)分, 对应到部分分, 就需要\(\#1\) ~ \(\#16\)的\(64\)分.
往\(DP\)想, 轻易地发现一个\(n^2\)空间和\(n^3\)时间的暴力: \(f(i,j)\)表示处理完前\(i\)个数, 最后一段是\((j,i]\)的最小代价. 能拿\(\#1\) ~ \(\#9\), 还是悬啊!
然后, 我通过神奇的第六感输出了每个状态的前驱, 发现能够帮助其他状态转移的, 只有从\(f(i,i-1)\)到\(f(i,0)\)的第一个有效状态!
这样的话, 状态数压缩到\(n\), 转移成了\(n^2\), 貌似稳了?
于是我开始为\(\text{Day1T2}\)可能出现的惨剧尽量拿分, 又发现对于\(f(i)\), 如果它能从\(f(j)\)或\(f(k)\)转移, 那么当\(j\ge k\), 从\(f(j)\)转移就一定优于从\(f(k)\)转移?
看了一眼读题时对题意的整理, 正好印证了对于一段和为\(S\)的数, 如果它既能划分进左边区块也能划分进右边区块, 通过简单的式子化简之这段数一定划分进左边区块更优. 于是我的时间从\(n^2\)变成了\((n\times\)玄学\()\rightarrow n^2\), 是不是更快一点能?
首先拿这个神奇的优化和\(n^2\)对过了拍, 没有出错, 又造了几组\(n=5\times10^5\)的数据, 居然卡在\(1.6s\)过了!
最终, 信仰开大空间, 喜提\(88\)分.
\(11:40\) ~ \(12:00\) 检查
发现\(T2\)部分变量没开\(longlong\), 赶快打补丁.
昨晚昨天的一系列检查操作, 望着天花板思考人生.
\(\text{Day 2}\) 反思
有失误, 也有奇遇, 可能\(\text{Day2T1}\)成为了目前唯一进步的空间, 估分\(32+88+55=175\), 总分\((100+100?+10)+(32+88+55)=385?\).
考后反思
估分极其之稳, \(result:~100+100+10+32+88+55=385\) ( 牛客数据 ).
总的来说, \(S\)组的考试算是平常发挥, 庆幸没有出现重大失误. 不足的地方在于把"暴力"和"爆搜"建立了某种神奇的联系 ( ? ) 局限了思维, 失掉了大众分. 也很感谢之前数学考试的爆炸让我学会了对于考试节奏的把控, 这次考试可以说心态, 节奏以及发挥都没有太大的问题 ( 对于考前定的目标来说 ). 戒骄戒躁, 继续努力吧!
Diary -「CSP 2019 J/S」 游记的更多相关文章
- LOJ#3054. 「HNOI 2019」鱼
LOJ#3054. 「HNOI 2019」鱼 https://loj.ac/problem/3054 题意 平面上有n个点,问能组成几个六个点的鱼.(n<=1000) 分析 鱼题,劲啊. 容易想 ...
- #3146. 「APIO 2019」路灯
#3146. 「APIO 2019」路灯 题目描述 一辆自动驾驶的出租车正在 Innopolis 的街道上行驶.该街道上有 \(n + 1\) 个停车站点,它们将街道划分成了 \(n\) 条路段.每一 ...
- #3145. 「APIO 2019」桥梁
#3145. 「APIO 2019」桥梁 题目描述 圣彼得堡市内所有水路长度总和约 282 千米,市内水域面积占城市面积的 7%.--来自维基百科 圣彼得堡位于由 \(m\) 座桥梁连接而成的 \(n ...
- 【LOJ】#3034. 「JOISC 2019 Day2」两道料理
LOJ#3034. 「JOISC 2019 Day2」两道料理 找出最大的\(y_{i}\)使得\(sumA_{i} + sumB_{y_i} \leq S_{i}\) 和最大的\(x_{j}\)使得 ...
- 【LOJ】#3032. 「JOISC 2019 Day1」馕
LOJ#3032. 「JOISC 2019 Day1」馕 处理出每个人把馕切成N段,每一段快乐度相同,我们选择第一个排在最前的人分给他的第一段,然后再在未选取的的人中选一个第二个排在最前的切一下,并把 ...
- 【LOJ】#3033. 「JOISC 2019 Day2」两个天线
LOJ#3033. 「JOISC 2019 Day2」两个天线 用后面的天线更新前面的天线,线段树上存历史版本的最大值 也就是线段树需要维护历史版本的最大值,后面的天线的标记中最大的那个和最小的那个, ...
- 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...
- 「WC 2019」数树
「WC 2019」数树 一道涨姿势的EGF好题,官方题解我并没有完全看懂,尝试用指数型生成函数和组合意义的角度推了一波.考场上只得了 44 分也暴露了我在数数的一些基本套路上的不足,后面的 \(\ex ...
- #3144. 「APIO 2019」奇怪装置
#3144. 「APIO 2019」奇怪装置 题目描述 考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\). 经过研究,科学家对该装置得出了一个 ...
随机推荐
- 解决zabbix server is running | No 的方法
Zabbix 的简介 Zabbix 可以监控网络和服务的运行状况,Zabbix 利用灵活的告警机制,允许用户对事件发送基于 Email 的告警.但最近在使用的时候遇到一个问题. 这篇文章主要给大家介绍 ...
- Linux上天之路(十)之Linux磁盘管理
主要内容 磁盘介绍 磁盘管理 磁盘限额 逻辑卷管理 磁盘阵列 1. 磁盘介绍 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息.盘片 ...
- 贝塞尔曲线(面)二三维可视化(Three+d3)
贝塞尔曲线(面)二三维可视化(Three+d3) 在学完 games101 几何后开始实践,可视化贝塞尔曲线 我想实现三维的贝塞尔曲线,用 threejs,但是 threejs 控制太麻烦了,因此,我 ...
- Python科学计算类库
Numpy是什么 Numpy是一个开源的Python科学计算库.使用Numpy,就可以很自然地使用数组和矩阵.Numpy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能. 矩阵: ...
- Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- echarts-gl初体验:使用echarts-gl实现3D地球
首先我们要下载引入echarts.js和echarts-gl.js 有需要的自己拿资源哈 链接:https://pan.baidu.com/s/1J7U79ey-2ZN4pjb7RTarjg 提取码: ...
- 局域网内部怎么安全接入U盘?
准备工具: 内部专用U盘一个: 能连接外网的电脑(暂称"安全机")一个. 第一.安全机上安装360杀毒.360安全卫士或其它安全软件.并经常更新病毒库.木马库. 第二.外来U盘先通 ...
- Git使用:版本回退
在Git中,我们可以用 git log命令查看我们修改的历史记录 C:\Users\Administrator\Documents\GitHub\learngit [master]> git l ...
- JAVA实现对阿里云DNS的解析管理
1.阿里云DNS的SDK依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-op ...
- git文件管理与索引,深入理解工作原理
前言 这一夜,注定是个不眠之夜,小白和cangls的对话已然进入了白热化.小白孜孜不倦的咨询关于git方面的知识,对索引越来越感兴趣.小白以前存的小电影文件可以进行版本的对比,探索哪个版本画质更好. ...