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

经过取模,区间哈希值就变小了,此时分成两个串是更优的,大概长度为 8 的子串哈希值就会被取模,所以最坏情况下,所有长度大于 16 的串都是劣的,都存在更好的多分割方案。

于是直接 DP 就行,复杂度 O(16n)

K - 复合函数

连有向边后形成基环树,可以发现环长种类数不超过 n,并且只要 ba0 (mod w) ,那环长 w 就是可接受的。要注意 min(a,b) 很小时,一些点可能走不到环上,记录环长的同时还要记录每个点离环的距离,复杂度是 O(nn) 的。

J - Mex Tree

转化后就是求,任意定一个根后:

  • 每个点子树的 Mex 值是否为 au
  • 去掉这个点的子树,剩下点的 Mex 值是否为 au

题目限制卡的很死,不能写线段树合并,考虑更好的做法。

题目限制了没有两个点权值一样,那判断一个子树的 Mex 值是不是 au ,只要判断这个子树小于 au 的值的数量是否为 au1 即可。而判断去掉子树剩下的点的 Mex,只要 u 的子树均不存在小于 au 的值,那剩余的子树 Mex 值就是 au

从小到大加点,用线段树维护即可。

C - Serval 的试卷答案

考虑对一个区间进行隔板法分割,分割 x 个板子就有 x+1 道题,设区间长度为 n ,我们需要在 n1 个板子中选择 k1 个。

对于值不上升的位置(如 AA,BA,DA,DD),我们必须要隔板,而其他位置任意分割,设这样的非法位置有 x 个,答案即为 (n1xk1x),即从 n1x 个任意分割的隔板中选择 k1x 个剩余的隔板。

线段树维护区间连续位置 s1s2,s1,s2{A,B,C,D} 的数量,复杂度为 O(16nlogn)

posted @   蒻蒻虫  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示