HNOI2019 游记
HNOI2019 游记
Day 0
其实考前几天,心里还是挺慌的。结果最后 Day 0 的时候,因为种种原因反而释然了。也许是觉得,在这一步退役,也没有什么好害怕的吧。
OI 本身就是一项偶然性太大的竞赛。也许在你遗憾失利的时候,还有更多比你强的选手倒在了省选前。
Day 1
拿到题之后,跳了计算几何与字符串,先开了相对擅长的计数。仔细分析了一下性质,发现大概是一个树的遍历的方案数。如果带修的话,因为修改的点数不多,大概可以暴力除掉原来的贡献,在乘上新的贡献就行了。
当时觉得乘上新的贡献的时候,要重新计算子树的大小,觉得细节有点多……当时决定,先写个 \(O(nm)\) 的暴力,最后看情况再改成 \(O(n \log n)\) 。大概 \(9\) 点的时候开始写代码,结果活生生调到了 \(11\) 点左右的时候才把暴力调出来……感觉再写下去会出事,赶紧扔了去看别的题。
回头看 T2,想了好一会怎么 \(\text{SAM}\) ,结果发现直接 \(\text{KMP}\) 就完事了……忽然意识到可能 \(\text{Undo}\) 一个 \(\text{Undo}\) 操作,还要建操作树,在操作树上跑 \(\text{KMP}\) 。写完之后,思考了一番满分做法,似乎可以把长度和字符视作一个二元组,对这个二元组再在操作树上跑 \(\text{KMP}\) ,特殊处理掉第一段,忽然觉得能做了,但是细节一大把……感觉不太能写了,于是赶紧扔了看 T1。
T1 上来写了个 \(O(n^6)\) ,想了一下后续,感觉都不是能在短时间内能拿分的玩意儿,拿了 \(20pts\) 直接溜了。
大概这个时候还剩下不到 \(1h\) ,手里还有 T2 和 T3 的正解,都不太能写。这个时候先尝试着写了分更多的 T2 ,仔细想了很久细节怎么处理,结果才写了没多久就觉得写不下去了……又看到了 T3。
冷静分析了一下 T3 更好写的写法,忽然发现,一条线段对应的子树大小,就是它的右端点 - 左端点 - 1。然后乘除组合数的时候,大部分的阶乘和阶乘逆元都抵掉了,最后只剩下乘两个数,除两个数。但是当修改连上了 \(n\) 号点和某个点的时候,还需要特判,最后的时候这个特判愣是没调过,就让它跑暴力去了……
出来的时候还觉得自己有 \(20 + 50 + rand(65,100)\) ,结果出来就发现 \(\text{KMP}\) 复杂度是均摊的……自己那个做法只有 \(20pts\) ,而那个所谓的正解也只能过没有 \(2\) 操作的点。想要通过总串长较小的点,还需要写个自动机一样的东西,这个东西拖到那个假做法上,字符集会很大,一下子不太会怎么搞。
结果最后出分 \(20 + 70 + 60 = 150\) 。T2 数据水的不行……真是服气……T3 \(\text{WA}\) 了俩\(\text{RE}\) 了一个,剩下的全 \(\text{TLE}\) 了。\(\text{WA}\) 是一个地方变量名打错了…… \(\text{RE}\) 是我直接把一个 \(\texttt{std :: deque}\) 赋值给另一个,结果好像不太能这么干?要先 \(\texttt{clear}\) 掉被赋值的哪一个,否则会出现随机 \(\text{RE}\) 。\(\text{TLE}\) 似乎就是被卡了……
Day 1 的分虽然还能看,但是打得很咸鱼……
Day 2
昨天仨取模,结果今天还有俩……行吧其实这种题还是挺适合我的。要是三个数据结构怕不是会被打爆……
先看了一下 T1,给我感觉是个签到,但我咋暴力都想了好久……写了一个记忆化搜索,开始还以为这个是 \(O(nm)\) 的,说不定 \(\texttt{bitset}\) 一发就过去了,结果仔细分析发现是 \(O(m^2)\) 的,这咋 \(\texttt{bitset}\) 啊……感觉不太对,先扔了看 T2。
T2 前 \(20\) 应该是暴力,后面保证了 \(k\) 是 \(2\) 的次幂,又满足 \(k | p - 1\) ,看上去比较循环卷积。仔细想了想,感觉可以写个矩乘 + \(\text{NTT}\) ,这样就有 \(60\) 了。后面都没保证 \(k\) 是 \(2\) 的次幂,这还能循环卷积?一脸被卡科技的感觉,于是去看 T3。
T3 盯着样例解释看了一会,不知道怎么就想到一个 \(O(nm)\) 的贪心,感性一波感觉正确性没啥问题,于是直接开写了。拍也没拍,不知道自己拿来的自信……
回头写 T2,忽然发现模数没给,并不知道原根怎么求……跟着感觉乱写了一个求原根,仔细想了想好像没啥问题?写完了矩乘 + NTT,忽然发现这个裸暴力我好像……不会写!想了好久,好像只会 \(O(L^2)\) ……当时不知道怎么回事,觉得这个裸暴力可能要写任意模数NTT……自己认为的签到题还只有裸暴力分,于是回头看 T1。
整个想 T1 的过程里,脑袋里全是 \(\texttt{bitset}\) ……根本没往优化建边的思路想。考试结束前尝试用各种数据来卡这个记忆化搜索,怎么卡也卡不掉……有点蒙……
估分 \(30 + 40 + 50 = 120\) ,出来问了一圈感觉好像不差,就是这个 T2 的裸暴力没写出来有点可惜……直接乘个组合数就行了,也不知道考场上脑袋抽了什么风……
结果最后出来 \(0 + 40 + 50 = 90\) 。我怎么又双叒叕挂分了……仔细想了想发现这个记忆化搜索好像是错的,这样有概率把 YES
判成 NO
……必须从合法状态开始 \(\texttt{bfs}\) 才是对的。
感觉自己这两天考得实在很咸鱼……不过好像很多人都挂了分,所以分都不怎么高。最后勉强混了个 A 队,看了圈 A 队名单,感觉自己 NOI 真的要 A 队垫底了……
Day \(\infty\)
又是一场考得比较崩的比赛,仔细回想起来,真的丢了太多不该丢的分。若不是数据水救了我一命,就只能排到 B 队中游了。Day1T3,Day2T1 和 Day2T2 都有不该丢的分,单单是写挂的分加起来也有 \(70\) 分了……究其原因,一方面自己写代码的时候,缺乏检查的过程,没有仔细分析正确性;另一方面,自己对于某些细节比较多的题,常常没有想清楚一些细节就直接开始写,导致花费了太多时间,甚至最后没能通过。像这个 Day1T3,如果我一上来仔细想想怎么写更好写,绝对是可以在 \(1.5h\) 以内写完的。
接下来的三个月,还有一些算法窟窿需要补,考试的准确率还需要训练,代码能力还需要提高,还有太多的事情要做……
NOI 不再容许我犯这么多的低级错误了,加油吧!
HNOI2019 游记的更多相关文章
- HNOI2019游记
\(day~?\) 我们的老师告诉我说,你这次省选目标分:\(70\),拿不到,家法伺候.但其实,我的目标是不爆零!!! \(day~-1\) 这天晚上,我们的指导老师给我们试了一下ZJOI2019, ...
- 游记-HNOI2019
Day -1 最后一场考试依旧没有ak(达成成就:\(\mathrm{OI}\) 生涯 AK 次数仅一次) Day 0 听dalao们说现在做题已经没有意义了,不如多口胡几道题,拓展视野 虽然很抗拒但 ...
- HNOI2019梦游记
\(Day_0\) 十点半开始睡觉,开始了八个小时的不眠之夜,整晚都没睡着,这状态明天肯定挂了 \(Day_1\) 开局一条鱼,计算几何只会\(20\) 还是\(T2\)的\(20\)纯暴力好打,\( ...
- HNOI2019滚粗记
HNOI2019滚粗记 标签: 游记 Day -1 在学校打摆被抓. Day 0 在家打摆. Day 1 来长沙理工大学打摆 开场看完题之后,感觉T3不太可做,然后T1T2又显得特别套路,然后把T2 ...
- ZJOI2019Day2余姚中学游记(4.23~4.26)
前言 \(Day2\),又是一场噩梦. 前段时间去做了挺多十二省联考和\(HNOI2019\)的题目,还订正掉了\(Day1\)的\(T1\)和\(T2\)(\(T3\)动态\(DP\)完全不想订正啊 ...
- 【20161203-20161208】清华集训2016滚粗记&&酱油记&&游记
先挖坑(这个blog怎么变成游记专用了--) 已更完 #include <cstdio> using namespace std; int main(){ puts("转载请注明 ...
- 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记
先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...
- NOIp2016 游记
DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...
- NOIP2016游记
只是游记而已.流水账. Day0:忘了. Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路.然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2.一开始我推的限制条 ...
随机推荐
- debian下 Hadoop 1.0.4 集群配置及运行WordCount
说明:我用的是压缩包安装,不是安装包 官网安装说明:http://hadoop.apache.org/docs/r1.1.2/cluster_setup.html,繁冗,看的眼花...大部分人应该都不 ...
- Python之异常处理(执行python文件时传入参数)
使用sys模块 使用sys模块里的argv参数,用来保存参数值 import sys #sys.argv的作用是获取到运行python文件时,传入的参数 #默认如果运行python文件不传参数,arg ...
- PHP 高并发秒杀解决方案
本文提供 PHP 高并发秒杀解决方案(附加三个案例说明(普通流程,使用文件锁,使用redis消息队列)) 1:(正常流程,不做任何高并发处理),代码如下: <?php $_mysqli = ne ...
- hive条件函数
case相当于if,when相当于=:then是条件满足的结论.否则实行else后语句,一end结束
- python之路--进程内容补充
一. 进程的其他方法 进程id, 进程名字, 查看进程是否活着(is_alive()), terminate()发送结束进程的信号 import time import os from multipr ...
- vue組件
組件有局部組件和全局組件,全局組件,其它的元素能夠調用. Prop父組件子組件看不大明白.
- 获取网络图片并显示在picturbox上,byte[]数组转换成Image:
private void getWebPicture_Click(object sender, EventArgs e) { WebRequest request = WebRequest.Creat ...
- LODOP安装参数 及静默安装
在cmd命令里里静默安装lodop(c-lodop不能静默安装),本人的安装文件放在D:\lodopdownload\3060\Lodop6.224_Clodop3.060,如下所示: lodop静默 ...
- Socket初见
前端代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <t ...
- JUC虚假唤醒(六)
为什么条件锁会产生虚假唤醒现象(spurious wakeup)? 在不同的语言,甚至不同的操作系统上,条件锁都会产生虚假唤醒现象.所有语言的条件锁库都推荐用户把wait()放进循环里: whil ...