【题解】 Codeforces Round #706 题解

附(本场比赛各题 fst 率)

div2 A B C D E F
div1 A B C D E F
div2 0.0010 0.0035 0.0007 0.3090 0 0
div1 0 0.1962 0.0026 0 0 0

A - Split it!

检查 k=0 或者长 k 的前缀和长 k 的后缀的反串是否相同。

注意如果 2k=n 要特判。

复杂度 O(n+k)

B - Max and Mex

模拟一下过程就会发现:

要么 maxmax 永远不会变,要么就会一直加 1

所以答案只有可能是 n,n+1,n+k 中的一个。

注意特判 k=0

复杂度 O(n)

C - Diamond Miner

把所有点翻折到正半轴。

在最优方案中连线不能交叉,因为三角形不等式。

所以直接排序贪心连接。

复杂度 O(nlogn)

D - Let's Go Hiking

设最长连续单调段长度为 a,个数为 b

只有 b=2,且这两段有交,且 a 为奇数的时候有解。

复杂度 O(n)

E - Garden of the Sun

搁三列填满一次,发现这样不会有环,然后只需要把这些列连起来就行了。

复杂度 O(nm)

F - BFS Trees

考虑计算 f(i,j),如果 i,j 之间最短路有多条则答案为 0

否则可以暴力检查每一条边是否能在树中,并为每一个不在最短路上的点安排一个父亲结点即可。

复杂度 O(n2m)

G - Qingshan and Daniel

找到会出完牌的一队 A,另一队伍为 B,对于 A 队,它的每一次出牌会造成右侧第一个 B 队的人出牌。

直接记录一下当前遍历到的 A 队的它们会让多少个后面的 B 队的人出牌 cnt

如果下一个是 A 队,则 cnt+=ai

如果下一个是 B 队,则让这个人出 min(ai,cnt) 张牌,并让 cnt 减小。

复杂度 O(n+m)

H - Squares

这题窝不会,丢个官方题解:https://codeforces.com/blog/entry/88533

验题人提供一个和官方题解不同的做法。

把树建出来,发现你无论怎么走到 end,都必须经过一个点的父亲。

预处理每个点到父亲的最短路,预处理跳过一棵子树的最短路和落点。

查询可以直接树上差分出来。

复杂度 O((n+q)logn)

posted @   Imakf  阅读(182)  评论(4编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示