首页 > 其他分享 >[ABC297G] Constrained Nim 2 题解

[ABC297G] Constrained Nim 2 题解

时间:2023-08-20 21:12:40浏览次数:36  
标签:right cdot 题解 ABC297G le Constrained SG operatorname left

题意

有 \(N\) 堆石子,其中第 \(i\) 堆有 \(A_i\) 个石子。每次可以选一堆从中取 \(\left[L, R\right]\) 个,问判断先手后手胜负。

(\(1 \le N \le 2 \times 10^5, 1 \le L \le R \le 10^9, 1 \le A_i \le 10^9\))。

题解

考虑子游戏,即只有一堆石子的情况,考虑其 \(\operatorname{SG}\) 函数,首先给出结论

\[\operatorname{SG}(X) = \left\lfloor\dfrac{X \bmod \left(L + R\right)}{L}\right\rfloor \]

下面给出证明

若 \(0 \le X < L + R\)

  • 如果 \(0 \le X < L\),那么显然先手必输,此时 \(\operatorname{SG}(X) = 0\);
  • 如果 \(L \le X < 2 \cdot L\),那么 \(X < L + R \Rightarrow X - R < L\),所以此状态可以一步转移到所有 \(Y \in \left[X - R, X - L\right)\) 的状态,包含的 \(\operatorname{SG}\) 函数值集合为 \(\left\{0\right\}\),此时 \(\operatorname{SG}(X) = 1\);
  • 如果 \(2 \cdot L \le X < 3 \cdot L\),那么 \(X < L + R \Rightarrow X - R < L\),所以此状态可以一步转移到所有 \(Y \in \left[X - R, X - L\right)\) 的状态,包含的 \(\operatorname{SG}\) 函数值集合为 \(\left\{0, 1\right\}\),此时 \(\operatorname{SG}(X) = 2\);
  • 如果 \(3 \cdot L \le X < 4 \cdot L\),那么 \(X < L + R \Rightarrow X - R < L\),所以此状态可以一步转移到所有 \(Y \in \left[X - R, X - L\right)\) 的状态,包含的 \(\operatorname{SG}\) 函数值集合为 \(\left\{0, 1, 2\right\}\),此时 \(\operatorname{SG}(X) = 3\)。

以此类推,可得 \(\operatorname{SG}(X) = \left\lfloor\dfrac{X}{L}\right\rfloor\)。

若 \(L + R \le X < 2 \cdot \left(L + R\right)\)

  • 如果 \(L + R \le X < L + R + L\),那么 \(L + R \le X \Rightarrow X - R \ge L\),考虑到 \(\operatorname{SG}(L) = 1\),所以此状态无法一步转移到 \(\operatorname{SG} = 0\) 的情况,因此此状态 \(\operatorname{SG}(X) = 0\);
  • 如果 \(L + R + L \le X < L + R + 2 \cdot L\),那么 \(L + R + L \le X \Rightarrow X - R \ge 2 \cdot L\),所以该状态可以一步转移到的 \(\operatorname{SG}\) 函数值集合为 \(\left\{0, 2, 3, 4, 5, \cdots, \left\lfloor\dfrac{L + R}{L}\right\rfloor\right\}\),所以此状态 \(\operatorname{SG}(X) = 1\)。

同样的,对于所有 \(L + R \le X < 2 \cdot \left(L + R\right)\),有 \(\operatorname{SG}(X) = \left\lfloor\dfrac{X \bmod \left(L + R\right)}{L}\right\rfloor\)。

若 \(2 \cdot \left(L + R\right) \le X\)

\(\operatorname{SG}(X)\) 的值仅会从 \(\operatorname{SG}(X - R), \operatorname{SG}(X - R + 1), \cdots, \operatorname{SG}(X - L)\) 中转移,类似于第二种情况,我们可以得出

\[\operatorname{SG}(X) = \left\lfloor\dfrac{X \bmod \left(L + R\right)}{L}\right\rfloor \]

Code

//AtCode - ABC297 - G
#include <bits/stdc++.h>

typedef long long valueType;
typedef std::vector<valueType> ValueVector;

int main() {
    valueType N, L, R;

    std::cin >> N >> L >> R;

    valueType SG = 0;

    for (valueType i = 0; i < N; ++i) {
        valueType A;

        std::cin >> A;

        SG ^= (A % (L + R)) / L;
    }

    if (SG > 0)
        std::cout << "First" << std::endl;
    else
        std::cout << "Second" << std::endl;

    return 0;
}

标签:right,cdot,题解,ABC297G,le,Constrained,SG,operatorname,left
From: https://www.cnblogs.com/User-Unauthorized/p/solution-AT-ABC297-G.html

相关文章

  • CF1823F Random Walk 题解
    题意给定一棵由\(n\)个节点组成的树,定义每次移动的方式为等概率的移动到相邻节点上,询问从\(s\)移动到\(t\)的过程中每个点的期望经过次数。(\(1\len\le2\times10^5\))。题解定义\(f_i\)为节点\(i\)的期望经过次数,\(fa_u\)为节点\(u\)的父亲节点,\(\operatorna......
  • 「TAOI-2」Break Through the Barrier 题解
    前言:比赛前去做牙齿矫正,回来晚了10分钟……做比赛的运气全用在了一路绿灯上了(无语)。第二题切了两个半小时。决定写篇题解来抒发一下再记得愤怒愉悦之情。AC的想法很简单,就是表示出每一串连续的\(\texttt{T}\),其长度分别为\(l_1\liml_m\)。明显的,对于任何一个\(l_i\),在一......
  • P1345 [USACO5.4] 奶牛的电信Telecowmunication 题解
    P1345[USACO5.4]奶牛的电信Telecowmunication题目描述农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流。这些机器用如下的方式发送电邮:如果存在一个由\(c\)台电脑组成的序列\(a_1,a_2,\cdots,a_c\),且\(a_1\)与\(a_2\)相连,\(a_2\)与......
  • P9556 [SDCPC2023] A-Orders 题解
    题目传送门一道模拟题。可以命名一个订单的结构体,然后将订单的结束时间进行排序。用一个变量模拟货物的数量,每遇到一个订单,货物的数量就会加上距离上一个订单的天数乘上\(k\)。即对于第\(i\)个订单,距离第\(i-1\)订单货物数量增加了\((a_{i}-a_{i-1})\timesk\)。如果在模......
  • CSP模拟赛题解
    目录CSP模拟16T1:糖果CSP模拟17T1:弹珠游戏T2:晚会CSP模拟18T1:TheThirdLetterT2:InaoftheMountainCSP模拟19T1:StrangeFunctionT2:DZYLovesModificationCSP模拟21T1:[CEOI2016]kangarooT2:[JOI2023Final]Advertisement2T3:YourCSP模拟22T1:TheChildandToyCSP模拟16T1:......
  • JS习题解析
    1、页面有一个id为button1的按钮,如何通过原生的js禁用?(IE考虑IE8.0以上版本)A、document.getElementById("button1").readonly=true;B、document.getElementById("button1").setAttribute('readonly','true');C、document.getElementById("button1&quo......
  • 题解 Cow and Snacks
    被黄题创死了2333题目链接首先肯定有一个贪心的想法:尽量使得人们拿的花重复,即尽量使得每个人都拿一束花。当然第一个人必须拿两束。接着思考:如何找出有几个人是必须拿两束花的。其实很简单,当\(A,B\)两人不能通过其他人使得他们的花有联系,比如\(A\)喜欢\(1,2\),\(B\)喜欢......
  • 8.20题解
    T1sun暴力枚举即可时间复杂度分析:\((lnx)'=\frac{1}{x}\)根据牛顿-莱布尼茨公式可得:\(\sum_{x=1}^{n}{\frac{1}{x}}=\int_{1}^{n}{\frac{1}{x}}=ln(n)-ln{1}=ln(n)\)令\(ln(n)=k\)可得:\(n=e^{k}<=e^{15}\approx3269017\)T2order首先需要理解题意......
  • CF1656D K-good 题解
    CF1656DK-good题解题目大意给出\(t\)个整数\(n\),对于每一个\(n\)找出一个大于等于\(2\)的整数\(k\),使得\(n\)可以表示成\(k\)个mod\(k\)的结果互不相同的正整数之和。\(1\let\le10^5,2\len\le10^{18}\)。题解我们先将题意再次化简,可以得到,我们实际......
  • P9571 Horizon Blue 题解
    P9571HorizonBlue题解这个题拿平衡树写是不是小题大做了咳咳咳进入正题。首先转化一下题意。第一个操作是加入直线,第二个操作就是求所有斜率不等于\(k\)的直线的数量,第三个操作就是删掉所有斜率不等于\(k\)的和所有与该直线重合的直线。感觉这题完全就是FHQ_Treap的......