BIT training long round #2 summary
BIT 校赛 5h赛第二场总结
选自 2022 年第四届河南省 CCPC 大学生程序设计竞赛 正式赛
- solved 9/12, rk3, 罚时 15 发
赛时 rk1 体验卡(半小时不到),B首杀,还挺好(C 差点也首杀,难受,还是赛时没想明白)。
历程
这场没怎么犯病,先开的 B 题,大概有思路,第一版的 DP 过程写的有问题(纯 ICU),但样例根本不需要 DP......5 发罚时就这样交上去了,最后一发还被卡了,原定的是最长串限制在 20,卡飞了。
这场 G 好逆天。
接着开的是 K,一眼基环树加根号,最开始忘了讨论 a,b 很小,点没有到环上的情况了,又重写了一个,大部分时间在写找环。
J 不想思考写线段树合并结果是时空双双被卡......
接着是 H,不知道为什么写这么久,最后有个小细节没处理好,又挂了几发。
C 做了很久,一开始就想到维护上升段个数了,但最后的答案统计改了好几版,兜兜转转才转到组合数上(一开始一直写的排列数),组合数的参数又改了好几版,中途发现线段树还写挂了!
最后半小时想开掉 I,最终被完虐,哎哎工程题怎么这么坏。
部分题解
B - Hash
经过取模,区间哈希值就变小了,此时分成两个串是更优的,大概长度为
于是直接 DP 就行,复杂度
K - 复合函数
连有向边后形成基环树,可以发现环长种类数不超过
J - Mex Tree
转化后就是求,任意定一个根后:
- 每个点子树的 Mex 值是否为
。 - 去掉这个点的子树,剩下点的 Mex 值是否为
。
题目限制卡的很死,不能写线段树合并,考虑更好的做法。
题目限制了没有两个点权值一样,那判断一个子树的 Mex 值是不是
从小到大加点,用线段树维护即可。
C - Serval 的试卷答案
考虑对一个区间进行隔板法分割,分割
对于值不上升的位置(如
线段树维护区间连续位置
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性