代码源 2024 Day 7 ~ 11

Day 7 / 2024-10-02

开 T1,发现 n16,感觉是个状压 DP 状物,但是手玩了半天还不会,写了个 30 pts 的爆搜。

T2,感觉应该是有规律的,但是并没有细推,也没有打个表看看,最后只会 5 pts 的 BFS 爆搜。

T3,删边,似乎没有多少时间了,写了 20 pts 的 DFS 爆搜。

T4,邻域查询,感觉像是个数据结构题,但是不是太会。

对于 n,q2000,直接 O(nq) 的 DFS,还有对于只有操作 3,求个 DFS 序并用线段树维护一下即可,这样有了 20 pts。

估分:30+5+20+20=75

实际:30+5+20+10=65,T4 DFS 挂了 10 pts,唉。

讲题发现 T1 的状压是简单的,T2 的规律打表发现后也是简单的,T3 的图情况求个生成树就成为树情况了,很寄。

Day 8 / 2024-10-03

T1,卡牌游戏,有 3 种操作,很想 DP。

但是发现有后效性,不好转移,也不好设状态。

爆搜只有 10 pts,太少了,必须想正解。

发现可以从后往前转移,设了个空间为 n4,时间也为 n4 的 DP,n 只有 100,看上去勉强可过。

发现每次转移只与后一个位置有关,于是可以滚掉一维,这样空间变为 n3 的了。

时间方面,发现前面每一次枚举似乎都不到上界,当 n=100 时打了个表,发现只跑了大概 2×107 次,感觉很可过。

很快写完了,但是 T 组数据,本地其中一组数据都要跑 300 多毫秒,又卡了一下上界变为 200 多毫秒,很绷。抱着试一试的心态交了一发,发现 10 组数据只用了 100 多毫秒,很震撼,速度竟然是本地的 10 倍。

此时大概 1.5 h。

T2 像是数据结构题,写了个 n4 的做法(但是肯定跑不满),发现能过 n3 的点。

考虑优化,会了 n2 的做法。后面就不会了。写了 n230 pts。

T3 像是大模拟,题算是读懂了,但是不太会做法,跳了。

T4 对于 n=1 的情况时好算的,对于 n=2 的情况打了个表,推出了每维方案数与 c 有关的式子,上个快速幂就行了。这样有了 20 pts。

结束,估分 100+30+0+20=150

实际,100+30+0+20=150,没挂分,感觉良好。

T2 正解是大力分块,感觉好复杂,T3​ 似乎是手玩一下就能想出做法的,但是赛时没有时间。T4 正解怎么还有卷积,畏惧了。

Day 9 / 2024-10-04

成为全场唯 2 的小丑。

T1 感觉很可做啊,推了一下发现每一位上如果同时有 10,就一定会合并为 0

还可以处理出每个数要向左和向右合并多少次。

但是具体到算答案就卡住了,因为不知道向左还是向右,然后就不会了。

此时 1 h。

T2 感觉是性质题,但是没看出来什么,写了个 O(2n+mnm) 的爆搜,样例都 TLE,寄完了。

交上去还是 TLE。心凉了。

此时 2 h。

开 T3,设了个 DP,很快写出个 n2 的 DP,写完后发现代码好短啊,对转移的限制条件也只有两个,遂考虑优化。

有两个限制条件,对于任何一个都是好优化的,但是放在一起就很复杂,想了 30 min 无果。

突然发现第 2 个限制条件不需要满足,因为如果不满足,对应的 f 的值为 0,加上 0 与不加上 0 没有区别。

简单了,需要实现单点加,区间求和,写了个树状数组就过了,跑的速度还可以。

此时 3 h。

T4 挺好懂的,会 n2 的做法,鉴于现在 T1 为 0 分,又回去看 T1 了。

最后 1 h 很痛苦,几乎接近正解了,但因为不会证正确性而否决,最后连爆搜也没有时间写,0 分收场。

同学们都好强,hthntd 样例有 350 分,很多过了 T1 和 T3。

估分:0+0+100+0=100

实际:0+0+100+0=100

出来 Heldivis 给我讲了 T1,发现很简单啊,证明也很好证,唉。

评完之后,发现过了 T3 且 T1 0 分的只有两个人,而我是其中之一。

T2 贪心做法很神奇,hthntd 的赛时 70 分 TLE 在了判无解上面,改成 bitset 判复杂度将为 O(n3w) 就能卡过了。

总结:还是要去想部分分的,不会正解时多拿部分分。手玩和打表都要尝试。

Day 10 / 2024-10-05

Heldivis 没来,很生气。

开题,发现 T1 题面有点长啊,感觉像是模拟,先跳了。

开 T2,是个构造,很寄。感觉能推的东西挺多的,但是只看出来了 ai=nan+didi,接下来就不会了。

对于每个 di,有加和减两种选择,然后写了个 10 分的 O(2n) 的爆搜,测一下样例,很逆天,n=2500 的数据跑了 1 ms。因为是 SPJ,结果很多,所以搜到任意一组是容易的吧。

开 T3,题意好懂,但是感觉暴力都困难,想了一会儿就跳了。

T4,n40 的部分是简单的,可以 O(n5) 的用 floyd 去做。然后去想树的情况,手完了好几组样例也没看出来,打表也没有什么头绪,只写了 10 pts 的部分分。

会 T3 的爆搜了,手写一个队列维护当前重复的名单,然后 O(2n) 的 DFS,10 pts 到手。

此时大概是 10:40,留了 1 h 多看 T1。

可以先按时间排个序,然后用 set 维护一下现在还可以移动的精灵,set 内存 id,可以保证不同精灵同一时间到同一个格子上时,id 最小的留下字母。因为 r×c2.5×105,时间复杂度大概是 O(rclogn) 大常数吧,很快就写完了,稍微调了一下,11:10 就过了大样例。

剩下来的时间一直在想 T2,会了 O(n3) 的 DP 做法,但突然发现题上要输出方案,这下不会了。

估分:100+10+10+10=130

实际:100+10+10+10=130

发现 hthntd 和 sorato_ 都过了 T2 啊,下午听讲评是发现 T2 发掘一下 +nn 无所谓的性质就可以直接 DP 了,赛时好蠢。

T3 似乎是 DP,后面有些限制,再用组合数算。

T4 是一个“脑筋急转弯题”(来自 apiad ),又是发现有些限制是没有用的,然后直接做就可以了。

Day 11 / 2024-10-06

感觉水平完全没有发挥出来。

T1 是线图,首先有一个 O(m2) 的做法,就是暴力建边,然后可以 Prim 做。

又想了一会,发现就是边太多不好建,然后就不会处理了,写了个 40 pts 扔那。

T2 又是构造,但是限制好多,不会写,跳。

T3 很神秘,像是 DP,但是发现不好转移,写了 O(2n) 的爆搜。只有 5 pts 呜呜呜。

T4 就是 DP,但是列出状态确写不出转移方程,调了 1 h 还调不出来,无语了。

又回去看 T1,写了树的 20 pts 和菊花的 10 pts。

尝试写 T2 n3 的部分,发现只会 n=1n=2 的情况,寄完了。

估分:70+0+5+0=75

实际:50+0+5+0=55

树的部分分挂了,难绷。
怎么都会 T1,Lydic 还会 T2,这么牛。

发现 T1 和以前做过的一道 ABC 的 E 题很像,那个题也是给你一个集合,里面的点互相都有边,但是考场上根本没联想到这个题,哎。

总结:尝试去做之前的题,记住一些题的套路以及 trick。毫无思路的时候可以考虑随机化,DP 还需要加训。

posted @   zhujiangyuan  阅读(42)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示