Codeforces Round 889 (Div. 2)
Codeforces Round 889 (Div. 2)
A. Dalton the Teacher
找出的位置的数量,答案即为数量
B. Longest Divisors Interval
若能被整除,则n一定能被 整除,证明如下:
首先1显然,中一定有2的倍数, 中一定有3的倍数,以此类推。
从2开始枚举因数直到不能整除,即为答案。
C1 & C2. Dual
首先考虑同号的情况,若每个数全为正数,要使序列递增,只需按顺序从2开始对于每个i,将i-1加到i上,这样操作最多需要19次。负数的情况倒序。
考虑如何用12次将所有数变为同号,容易想到的是让绝对值最大的一个数去加到所有与它异号的数上,但是这有可能超过12次,因此统计一下正负数的个数,如果两种数都小于等于12,则可以这样操作,否则,假设负数的个数小于等于7个,这时挑选一个正数,五次对其自身操作将其变为大于20的数,然后加到每个负数上,这样最多也不会超过12次,正数小于等于7个时同理。
D. Earn or Unlock
首先,如果恰好走到了k位置,则1到k之间的数中有k-1会被用来解锁,剩下的可以获得,答案为。
因此只需要确定哪些位置可以恰好到达,求出的最大值即为答案。
考虑dp,设状态表示是否可以到达j的位置,转移方程为:
使用bitset优化转移:
E. Expected Destruction
将集合看成n个物体在数轴上向右移动,相碰会消失一个。
如果任何两个物体都不相碰,则需要秒,若有两个物体在x的位置相撞,会使答案减小。
我们将碰撞视为只发生在最初相邻两个物体上,这是因为,假设两个物体为i和i + 1,若物体i - 1向前走碰到了i,我肯可以将其视为i - 1消失了,如果i + 1向后移动碰到了i + 2,可以视为i + 2消失了。
因此只需要对于每对最初相邻的物体算出他们在任一位置x相遇的概率,再将最初的答案减去即可。
概率使用dp计算,对于两个物体x,y,,设表示x走到i,y走到j的概率,转移方程为:
复杂度为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】