Codeforces Round 951 (D2) 分析和证明 更新到E

萌新的第二篇cf证明

A - Guess the Maximum

//这个问题比较套路

让我们看看Alice是怎么想的

Alice:“如果Bob选了[i,j],我只要保证[i,i+1]能赢就行。多出的数只会让max更大。”
所以枚举[i,i+1]即可。
//使用了调整法

B. XOR Sequences

每lowbit个数分成一段。原来相邻的段因为异或了lowbit,会交换位置。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-> xor 12
12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3
比如12 - 15这段,8 - 11这段就被交换了位置
那么只能选每一段

C. Earning on Bets

//这怎么是数学题
设投注 x0, x1, ...

那么我们需要
for each i , xi * ki > sum of x
所以 xi > sum / ki
累加得 sum > sum * Σ(1 / ki)
即 Σ(1 / ki) <= 1
这是合法的必要条件

此时我们取xi = 1 / ki即可
注意我们将xi乘上lcm(1,2,...,20),使xi是整数

D. Fixing a Binary String

大水题。
不妨设a[0] = 0(对于1的情况,取反处理即可)

第i个数应当是 i / k % 2
分别判断
s[p+1]s[p+2]..s[n] s[p]s[p−1]..s[1]这两部分是否合法即可

前面一部分合法,当:
数量<=k时,当全是0合法
否则,当前2k个数是00000...00011111.....111 且s[p+1+2k]...s[n]合法时合法

后面一部分合法,当:
s[p] = (n-1 - p) / k % 2 且 s[p−1]..s[1]合法
模拟即可
//upd 也可以哈希

E - Manhattan Triangle

什么样的三个点能组成Manhattan Triangle?
尝试如下情况

  .

.

     .

我们来画一些线

  .
  .

. . .
     .
     . . . . . .

那么由于上面的点到右下的距离,左边的点到右下的距离相等,所以红线和蓝线长度相等。

正式的说,
如果三点两两不共线(共线指x坐标或y坐标相同),那么
找到x坐标处于中间的(例子中是红点),
找到y坐标处于中间的(例子中是蓝点),
这两个点一定不同(否则处于边缘的两点距离一定大于中间这个点

.
 .
 . . 
     .
     . . . . . . .

就像这样)
那么这两个点组成的线是45°或135°的。(可以枚举所有情况证明)
如果有两点共线,那么会组成一个等腰直角三角形
也有一条边是45°或135°的。

以此模拟即可。

posted @   陈聂  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示