• 2024-07-21C. Salyg1n and the MEX Game
    原题链接题解在bob操作之后,alice可以选一个与bob一样的数补充,因此,最后的s为初始s加初始alice添加的元素,所以alice第一次要添加mex初始scode#include<bits/stdc++.h>#definelllonglongusingnamespacestd;inta[100005];voidsolve(){intn;cin>>n;
  • 2023-10-15CF1867C Salyg1n and the MEX Game
    CF1867CSalyg1nandtheMEXGame简单博弈论题。设给出序列的\(\text{mex}\)为\(x\),那么Alice第一次操作时加入\(x\)一定是最优的。此时显然有\(\text{mex(s)}\gex\)。因为如果加入的数\(y<x\),此时数列中有不小于\(2\)个\(y\)。如果Bob删掉了一个数,那么Al
  • 2023-09-18CF 1867 E1. Salyg1n and Array (simple version)
    Link简单版本的结论还是很容易猜到的。首先很容易想到的第一步就是尽可能地不覆盖地取尽可能多地区间,最后剩下了一小块。然后在接着原来的指针一个一个地往右问,直到不能问了为止。为什么这样是正确的呢?首先,在这样一步一步地往右查询的过程中,我们会发现总是前$k-1个数加上后面
  • 2023-09-12CF1867C Salyg1n and the MEX Game
    思路看着无从下手,实际上又是一道诈骗题。假设原数列不存在\(0\),那么我们可以直接加入\(0\),然后游戏结束,假设答案是\(k\)。那么,如果我们选择加入\(k\),来试图让答案变大,那么Bob就会移除一个数,最优的话是\(1\),这样的话,你无论加入\(1\)还是\(0\),答案都不会超过\(1\),于是
  • 2023-09-12CF1867E2 Salyg1n and Array (hard version)
    其实如果你在做E1的时候想到正解了,这道题都甚至不需要改E1的代码,直接交就好,这大概也是E2的分还没E1的高的原因。因为一摸一样的思路,所以这里就不作介绍了,可以看看我的题解。在这里呢,主要是稍微证明一下询问次数不会超,如下:可以发现,有余数的情况,只会增加两次询问,而后面的
  • 2023-09-12CF1867E1 Salyg1n and Array (simple version)
    思路首先考虑,\(n\)是\(k\)的倍数的情况,直接枚举询问所有每一段就好,然后输出每一段的异或和的异或和。如上图,每次询问都没有重叠部分,颠转互不干扰。那么,\(n\)不是\(k\)的倍数的情况呢?可以看到,与第一种情况的区别就是末尾多了一小截,那么我们需要考虑如何计算这一小截的