2022杭电多校第一场补题
显然还没补完
题目
A. String
KMP、Border树
题意
找字符串 的所有前缀子串 ,所有 长度 满足 的 数量。
数据范围
解法一, 建 border 树硬搞
思路
- 将题目要求经过简单的化简就是题意,先建立 border 树。
- 对于 border 树中每个节点寻找满足要求的祖先节点的个数。
- 考虑 dfs 同时开 个 vector 即
vector<int> cnt[K]
来记录 的数字。- 每遍历一个点进行
cnt[2 * u % k].push_back(2 * u)
。 - 然后因为 dfs 过程中通过回溯记录的是根到节点一条链上的信息,所以利用二分查询
cnt[u % k]
中大于 的个数记录为ans[i]
为节点最终的答案。
- 每遍历一个点进行
- 最后统计答案即可,然后因为SB杭电,恭喜我们 的递归层数也爆栈了,所以需要手搓一个递归栈。
- 时间复杂度 ,应该有别的解法,待补。
Solution
B. Dragon slayer
二进制枚举、dfs/bfs、坐标放大
题意
在 的方格图上,有 个横或竖的墙,起始坐标 ,结尾坐标 。问至少破坏多少面墙才能从起点到终点。
数据范围
每面墙坐标:
思路
- 范围很小,先枚举剩下了那些墙不能撞,
- 因为起始坐标很奇怪,不妨将坐标全部放大两倍,每次移动距离为 。
- 然后进行 判断能否达到终点,每次移动判断起点到对应终点的中点是否是不能被破坏的墙,如果不是就讲继续搜下一个点。
- 然后就做完了,时间复杂度
Solution
C. backpack
bitset优化背包DP
题意
求恰好装满背包的时候, 异或值最大值。
数据范围
思路
- 首先要考虑暴力dp如何设计: 表示到物品 i,异或值为 j,体积为 k 的方案是否存在。
- 如果正常来做,空间可以滚动,但是时间复杂度好像炸了是
- 如果有经验的话,可以用 bitset 来优化体积的转移,因为是加减。整体复杂度除 。最后算下来是 ,可以通过。
- 转移就是
-
Solution
D. Ball
bitset, 枚举
题意
给了 个点的坐标和大小为 的方格上,任意三元组之间 3 个曼哈顿距离的中位数是质数的三元组个数。
数据范围
思路
- 题意翻译成人话,对三元组 假设 , 是质数的个数。
- 先筛掉 内的质数,,显然可以考虑枚举, 的枚举显然寄了,考虑怎么优化呢?
- 我们可以在 复杂度求得,每个点之间的距离,得到邻接矩阵。
- 对于每条长度为素数的边,我们考虑如何找对应的答案,需要找一条比它小的和比它大的。
- 对于比较乱的序列,一个习惯是先排序,从小到大枚举,先出现的边显然比当前边小,怎么找比当前边大的并且端点符合要求呢?
- 这其实有一点像
bitset
优化找三元环的过程,这里给出一道题目提供练习,ABC258_G。 - 然而这里的长度是大于 1 的整数,但我们可以通过从小到大的枚举边的方式,把长度变为 0 或者 1,代表比当前边大还是小。方式其实无所谓,但初始化为 0 要方便一些。
- 所以开 个长度为
bitset bt
替代邻接矩阵, 代表 比当前边小,否则大,枚举完一条边后更新邻接矩阵。 - 对于每个长度为素数的边 的答案就是
bt[a]^bt[b]
中 1 的数量。而因为从小到大枚举答案记录是不重不漏的,可以考虑 三条边相同连续被遍历,但是我们统计答案并不会有重复
- 时间复杂度 , 是 bitset 的分母常数根据设备而定。
Solution
H. Path (未补)
I. Laser
思维枚举、计算几何、放缩坐标
题意
K. Random
签到直接输入 即可,需要求下 的逆元。
Solution
L. Alice and Bob
博弈、思维、按位赋权
题意
Alice 每次将所有数分成两个集合, Bob 每次删除一个集合,剩下的集合整体减 1。如果任何时候集合中的数有 Alice 赢, 如果 Bob 把数删光了,则 Bob 赢。
输入是 个值为 的个数
数据范围
思路
- 多模拟一下可以发现,对于某个值 有 个这个数的话,Alice 是必赢的。比如 1 个 0 或 2 个 1 或 4 个 2。从 Alice 的角度思考问题。
- 其实 1 个 1 和 2 个 2 也能赢,先把 1 给分开就赢了。
- 再试试又发现从 1 开始连续的 个数,其中任意一个数有 2 个就能赢。
- 有更正面的考虑方法。考虑问题时,如果一边有一个 ,那这个 是必删的,如果有 2 个 那这两个 Bob 是必删的,如果有 4 个 那也是必删的。剩余的数会减 1 ,那其实意味着要赢的话,他们所需要的个数减少了一半。
- 如果从前往后做,记录
sum
,到每一位 判断 大于就赢。否则sum = 2 * (sum + a[i])
。这样做一定能行,但是做不了,因为存不下。 - 有更 smart 的方式是倒着做,这其实实际上是对每一位赋予权重 ,最后权重之和大于 Alice 就能赢。具体见代码。
- 时间复杂度
Solution
总结
榜单情况
官方榜
校内榜
就是那个 1012 WA 5 的
Problem A
被 sb 杭电卡递归栈空间,改手写栈过了。。。
Problem B
队友读错题,最后一小时没改回来,主要还是博弈题没过,不然一起看B还是能过的,半小时不到就补完了。
Problem C
赛时想了有半个钟头,实在没啥思路,std是bitset优化,目前还不是很理解。
Problem I
Problem K
签到,不解释。
Problem L
博弈题,比赛十分钟出了思路给翔哥讲了下,感觉很正确,一直以为是对的,最后两小时交发现WA了,然后在犹豫改A题单调栈,一直徘徊,结果两个题都没过,蚌。
ALL
个人
经此一役,以后考虑问题可以先从暴力入手,先想一下能不能奇淫技巧化暴力比如 bitset
然后考虑真正的算法问题。
团队
第一场测试赛,做的比较佛系,总体节奏还是两人一题比较靠谱,一人单开容易寄。
__EOF__

本文链接:https://www.cnblogs.com/Roshin/p/HDU_multiTranning_Game1.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具