省流
5t 铜,艰难依旧坚持。
11.9
内含剧透,请vp后再来。
不是题解!!!!!!!
赛前
本来希望能抓紧时间多 vp 点实战,周中队友要上课很慢,最后未能拿到补题链接打了 24 年昆明。
赛时
看到 H 题,一个把连续 \(k\) 个节点间最大距离改成判断斜率的,直接丢给 jian 去写了。
M 题有类似数学的东西,也是直接丢给 yrjzs。
然后看 J 题,题目给定一个排列和 A 和 B 两个人谁先手。A 可以交换任意两个值,B 只能交换相邻两个值,两人交换途中如果能出现升序排列就 A 赢,否则 B 赢。想到如果有两个相反对则 B 可以一直把 A 交换的那个再换回原来的,于是猜测大于等于四的情况除了到 A 一步能搞定的情况都是 B 赢。等于 2 的情况 A 必赢,等于 3 的情况手推。把这个猜想丢给已经搞定 M 但还没上机的 yrjzs 让他去推等于 3 的情况了。
L 题是一个炉石。双方有 \(n \leq 5e5\) 个随从,每个随从有一些血量和一点攻击,死亡后会对全场造成一点伤害,问有没有一种攻击方法当前方可以让对手场面空掉。显然要搞一个教科书般的亵渎就要让血量呈阶梯状,想要造成尽量多伤害就让己方每个人都打一次,所有 \(1\) 血怪只能打一次。然后每轮先预定好爆炸伤害能炸死的己方随从并让它们爆,然后再尽量把敌方血量最少的随从打爆。如果对方死完后总伤害大于等于需要 a 出来的伤害则可以清场,否则不能。给 yrjzs 说完之后让他准备上机。
此时 jian 码完 H,yrjzs 上机码他的三道题。
一起看 C。有 \(n \leq 10^{12}\) 个人,每轮丢掉 \(1,1+k,1+2 \times k...\) 位置的人,问最后活下来的是谁。我提出一种根号分治的想法。对于 \(k\) 较小的可以计算丢掉的人数,模拟出总丢掉的轮次 \(m\)。\(k\) 较大的则一轮丢掉人数最多变化 \(\sqrt{n}\) 次,也可以模拟出丢掉的轮次。然后最后一个人在第 \(m\) 轮位于点 \(1\)。对于在第 \(p\) 轮位于点 \(x\),前面就会复活一些和 \(x\) 与 \(k\) 相关的可以计算出的人数。如果 \(m\) 较小可以模拟,\(m\) 较大则同上可以证明复活人数有限制,也可以解决。把 \(m\) 轮滚完就可以得到最终结果。
和 jian 说完,他觉得我很不可理喻,认为根本没必要求 \(m\)。因为倒着推的话,意味着这一轮的 \(x\) 和下一轮的 \(x\) 之间的 \(n\) 都代表答案为 \(x\),所以直接取后半部分倒推就可以了,当有某轮超过 \(n\) 时即可得到前一个 \(x\) 就是答案。我觉得非常对,于是 yrjzs 码完之后他上机码,也通过了。
赛后
很胡闹的看了一下 H。H 题给了 \(a \leq 5000\) 和 \(b \leq 1e18\),每次操作可以对 \(a\) 或 \(b\) 减少 \(\gcd(a,b)\),求最少操作次数把他们都变成零。yrjzs 发现只要把 \(a\) 变成 \(0\),\(b\) 就可一步变成零。而 \(a\) 减 \(\gcd\) 不会减小 \(\gcd\) 的值,所以直接用 \(a\) 除 \(\gcd\) 再加一就是结果。jian 说不对,因为减少 \(a\) 可能会增大 \(\gcd\),如 \(12\) 和 \(16\)。同理减小 \(b\) 也可以增大 \(gcd\),所以不是直接减 \(a\) 就可以,于是卡住。
看了题解,把 \(a\) 和 \(b\) 用二进制表示,如果最后一位都是 \(0\) 则两者可以视为同除 \(2\),如果有 \(1\) 则对它减 \(\gcd\),因为是奇数所以肯定能把最后一个 \(1\) 给减成 \(0\)。这样如果两者都是全 \(1\),在 \(5000\) 以内的范围也最多减 \(26\) 次,所以上限已经确定。由于数较小,所以剩下的直接 bfs 找有没有更小的可能就行。由于不是特别能构造出最复杂的数据,所以甚至不需要预处理 \(\gcd\) 就可以直接找到结果。
2025年11月10日