跟风写一篇,整理一下收获
UNR 期间
笔试
给群友分享了黄队的背笔试网站。
赛时错了一个题——选择可执行文件。正确做法是看前面的 rwx 权限,x 表示可执行。但是我看到 .sh 就直接选了,寄得很快。
还差点错了一个题——内存的功能(存放当前 CPU 正在运行或使用的程序和数据)。选项里有一个“仅存放数据”,斟酌了一下没选。
不过后面和同学 diff 了一下,提交了正确答案(大嘘)
Day 1
开场看题,T1 应该不难,T2 一股 AGC 的味道,T3 估摸一下是 DS 优化贪心。
先会了 T3 的 40 分,立刻写了。
T1 标算做法难度不高,主要是注意到汇合后的网友可以一起行动,所以相当于求最早的时刻使所有人走到同一个位置。我一开始没注意到这一点想了个 DP,挨个加入网友,维护每条边上的分段函数。之后对着转移看了看才发现了性质,感觉有点憨憨。最后写的是标算做法。
然后我就感觉:区分度必在 D1T2 上。我先是思考区间 DP,然而它只能判断 T 是否合法,用来计数很难不算重。接下来我把 01 串看作折线,试图分析插入 01 子序列的后果。但怎么想都不会做,最后我交了 10 分的暴力。
测出来发现过了 60 多人?说明此题并不难?
于是我死磕了一天这个题。无果。
Day 2
睡了一觉,我决定把比赛放一放,先重做一下 D1T2。
发现不用区间 DP,而是可以依次加入 T 中的字符,维护最长的 S 的前缀,使得它是当前串的子序列,且去除该子序列的串为括号序列。
当匹配无法进行、括号序列无法扩充同时成立时,我们可以进行“退还”,将当前匹配去掉最短的 0 比 1 多的后缀,从而使括号序列扩充。以匹配长度作为 DP 状态,可得到 \(O(n^3)\) 做法。
因此,再次加深了这样的认识:OI 里 BFS 更重要。如果卡题了,很有可能是思路错了。如果思路正确,思考过程应该是顺利的。
看了题解,朴素的状压 DP 也可以优化到正解,但是我没往这方面想。
剩下的题都有套路可寻,较难想的可能是 D2T1,但本文选择略过。感觉对于我而言,做思路新颖的题才是更重要的。
IOI
感觉 D1T3 非常难啊,后面的优化都还好说,第一步转化成求最多的不相交区间个数,这步感觉最难想到。
我想的做法是直接找区间最大值,然后递归左右边。如果 D 变化的话,就维护关于它的分段函数。但是一旦想到此做法,就难以回归标算。所以需要回溯思考,当觉得不对劲时,看看是不是有简单做法。
D2T3 也是同理,如果先得出充要条件,然后一个劲地只想 dfs 树做法,那么成功的希望不大。
联测
最难受的一次联测:开到了一个看过题解的大码题。于是狂写此题 4 个小时过了大样例,结果爆 0 了。其他题的暴力也挂了。感觉石乐志啊,写码题前还是要分析清楚细节。
最搞笑的一次联测:T1 是简单题,T2 是 DS 优化 DP,T3 是计数。
T2 的转移看似是三维偏序,实则是二维偏序。更恐怖的地方在于:我在推了 1h 后,发现三维偏序也能做,一共有两种转移,代码十分难写。于是不果断地放弃了这题,交暴力。
T3 大概是求很多数的数位和之和。看到题,我直接开始考虑每一位往上的总进位次数。推到后面发现:十分复杂。时间不够,只写了四次方的枚举。其实正解是刻画符合条件的数的性质,直接进行数位 DP:十分简单。
所以还是要选性价比高的题目做。
模板
感觉 NOI 大纲限制很多啊,没很多困难模板。
不过同学打了一些复杂 DS,我跟风做了一下。
Day -2
听时队分享了往年 FJOI,非常搞笑。
晚上围观了线上狼人杀。
Day -1
前面的部分全是这天上午、下午写的。
标签:偏序,T3,NOI2022,序列,做法,游记,Day,DP From: https://www.cnblogs.com/Alfalfa-w/p/16609855.html