ARC148总结

比赛情况

AC:3 / 6
排名:603rd
perf:1741

题目分析

A

假如 m=2,结果至多为2

也就是假如有最优解答案只能为1,那么求一下差分数组gcd是否大于等于2即可

B

首先明确,两字母相对,不同则不变,相同则都取反

因为只有一次机会,所以第一个 p 一定要改成 d,也就是左端点小于等于第一个 p

而左端点小于第一个 p,那么中间则全是 d,而翻转后还要保持 d,说明右边对应也是 d,说明右边对应也没变,所以这是完全无贡献的,所以我们就直接令左端点为第一个 p

然后此时枚举右端点再暴力翻转求最小字典序即可

时间复杂度 O(n2)

C

假如一个点是正面,则首先要让其儿子都变成正面,再一起反转

如果一个点是反面,则要让其儿子都变成反面

一棵树一开始全是反面,代价显然是0

一个点变成正面了,他所有儿子都要变,然后他们整体又要变

但如果它父亲是正面,他们它们整体就不用变,留给父亲变

所以每个点翻转成正面分别计算一下其儿子数量,然后判断是否和父亲相等

然后那个时间戳维护一下就行

D

以下状态都是考虑Alice准备拿的状态

设两人当前差为 d,则如果两人取相同的没有影响,因为此时拥有必胜策略的人可以在相同时顺着对手拿的方式拿

所以把相同数排除后,那么剩下的数两两不同了

先从最终状态考虑,假设剩两个数 u,v(uv)

考虑如果Alice必输说明什么?

  • d+uv(modm)
  • d+vu(modm)

推一推式子,移一下就是:dvu(modm)duv(modm)

显然可以合并,也就是 vuuv(modm),移项 2(uv)0(modm)

那么显然对 m 分类讨论:

情况一:m 为奇数

则:uv0(modm),说明 u=v,这显然不存在

说明这种情况下Alice输不了,也就是必赢

情况二:m 为偶数

显然,此时Alice可能赢可能输

首先,假如不满足等式,Alice必赢

那满足等式Alice必输吗,我们要看最后 d 是否为0

考虑此时的贡献:2(uv)m(modm),也就是 uvm2(modm)

他们对 d 的贡献恰好是 m2,那么我们只需要考虑满足条件成对 u,v 是否为偶数即可

如果偶数,Bob赢了,否则Alice赢了


你问我怎么构造方案?自己翻官方题解去

posted @   zhangtingxi  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示