【2023.07.18】“钉耙编程”中国大学生算法设计超级联赛Day1过题小记

1009 - Assertion(模拟、数学)

9分钟过题。打卡题,鸽巢原理,不懂也能做。

1005 - Cyclically Isomorphic(字符串)

26分钟过题。打卡题,比较典,用KMP过的。也有字符串哈希、后缀数组等过法。

1002 - City Upgrading(树、dp-树形dp)

1小时22分钟过题。树形dp,队友做的。

1012 - Play on Tree(树、dp-换根dp、概率论-树上删边游戏)

3小时14分钟过题。题目表述不清,一开始以为暴力枚举、只要有赢的走法即认定为赢,不用深度博弈、答案有限。结果看了提问区才知道双方仍然采取最优策略。

于是,固定根节点,问题转变为树上删边游戏(模板链接 ),可以使用SG函数解决;随后使用换根dp转移到不定根节点,个人感觉这题难度较高,然而过题人数惊人,竟差点成人均算法!

1001 - Hide-And-Seek Game(树、暴力、数论-扩展欧几里得)

题意:给定一棵 n (1n3103) 个节点的树。

接下来为 m (1m3103) 次询问,每一次询问如下:有一个人 A 会在 SaTa (SaTa) 的路径上来回走动、另有一人 B 会在 SbTb (SbTb) 的路径上来回走动,询问他们最早会相遇在哪个节点;如果永不相遇则输出 1

对于每一组询问,我们可以用BFS或者LCA之类的算法计算出两个人路径相交的点的编号,随后依次枚举两个人到达这些点的时间方程,随后对这些方程求解最小正整数解即可。

  • A 到某一点 x2k1dis(Sa,Ta)+dis(Sa,x)(2k1+1)dis(Sa,Ta)+dis(Ta,x) 其中 k1 为非负整数。











本文作者:hh2048

本文链接:https://www.cnblogs.com/WIDA/p/17564191.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hh2048  阅读(418)  评论(3编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起