首页 > 其他分享 >AGC002E Candy Piles

AGC002E Candy Piles

时间:2023-04-22 12:00:39浏览次数:62  
标签:状态 两个 Piles 必败 Candy 必胜 连续 AGC002E now

尝试考虑 \(n=1,n=2,n=3\) 的必败必胜条件,寻找一些结论,但是发现即使是 \(n=3\) 胜负情况已经有些不可描述了,说明我们必须尝试转化问题的形式。

注意到操作是全局减,常见的转化是差分,但是差分后的操作仍然没有优秀的性质。

继续思考,可以得到一个恰当的转化:注意到游戏结束当且仅当最大值 \(\leq 0\),那么可以维护两个数 \(now,x\),每次可以选择 \(now\gets now-1,x\gets x+1\),若状态满足 \(a_{now}\leq x\) 则为必胜态。那么问题转化为一个网格游走问题,每次可以向左或者向上,边界为必胜态。

画图可以发现状态是有规律的但是我没有看出来,所以考虑按列考虑,维护出每列的状态,考虑一些简单的情况:

  • \(a_2=6,a_{1}=4\),发现 \(x=3\) 和 \(x=4\) 会有两个连续的必胜态,其余状态必胜和必败相间分布。
  • \(a_{i+1}=7,a_i=6\) 且 \(x=3,x=4\) 有两个连续的必胜态,发现转移后 \(x=2,x=3\) 有两个连续的必胜态,其余状态必胜和必败相间分布。
  • \(a_{i+1}=8,a_i=6\) 且 \(x=3,x=4\) 有两个连续的必胜态,发现转移后 \(x=2,x=3\) 以及 \(x=5,x=6\) 有两个连续的必胜态,其余状态必胜和必败相间分布。
  • \(a_{i+1}=8,a_i=6\) 且 \(x=5,x=6\) 有两个连续的必胜态,转移后所有状态必胜和必败相间分布。

归纳可得规律:

  • 若 \(a_{i+1}\) 和 \(a_i\) 奇偶性相同。
    • 若 \(x=a_i,x=a_i-1\) 处不是连续必胜态,会在 \(x=a_i,x=a_i-1\) 两个位置插入连续必胜态,并平移其它状态。
    • 否则,会删除这两个连续必胜态,并平移其它状态。
  • 若 \(a_{i+1}\) 和 \(a_i\) 奇偶性不同,则平移其它状态。

使用支持单点加,单点删,全局加的数据结构维护即可,下面使用了 set,复杂度 \(\mathcal{O}(n\log n)\)。

https://atcoder.jp/contests/agc002/submissions/40819016

标签:状态,两个,Piles,必败,Candy,必胜,连续,AGC002E,now
From: https://www.cnblogs.com/yllcm/p/17342713.html

相关文章

  • android: minSdkVersion、targetSdkVersion、CompileSdkVersion三个api版本号的区别
    一,minSdkVersion:   app可以安装的最低的api版本:   1,安装:googleplay和应用市场会根据用户的api版本,           判断用户是否可以看到你的app    2, 运行:在minSdkVersion指定版本的api上运行时,           ......
  • 糖果 Candy uva1639
    有两个盒子各有n(n<=2e5)个糖,每天随机选一个(概率分别为p,1-p),然后吃一颗糖。直到有一天,没糖了!输入n,p,求此时另一个盒子里糖的个数的数学期望   假设最后某个盒子有k颗糖,然后计算概率即可 #include<iostream>#include<cstring>#include<algorithm>#include<cmath>u......
  • C. Candy Store
    C.CandyStoreThestoresells$n$typesofcandieswithnumbersfrom$1$to$n$.Onecandyoftype$i$costs$b_i$coins.Intotal,thereare$a_i$candiesof......
  • Android compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion
    1、CompileSdkVersion是你SDK的版本号,也就是APILevel,指定了Gradle编译你的App时使用的AndroidAPI版本  2、buildeToolVersion是你构建工具的版本,其中包括了打包工具......
  • arc143 C - Piles of Pebbles
    题意:\(n\)堆石子,每堆\(a_i\)个。甲乙轮流操作。甲每次选择至少一堆,使被选堆的石子数都减\(X\);乙每次选择至少一堆,使被选堆的石子数都减\(Y\)。不能操作者输。问谁赢......
  • [LeetCode] 2517. Maximum Tastiness of Candy Basket
    Youaregivenanarrayofpositiveintegers price where price[i] denotesthepriceofthe ith candyandapositiveinteger k.Thestoresellsbasketsof......
  • [AGC002E] Candy Piles
    很久以前做的题了,现在觉得这题没有写博客真是太可惜了,回来补。题目先举一个例子: 两种操作就等于删除一列或一行。所以这道题就转换成从原点随机向右或向上走直到......
  • CF334A Candy Bags 题解
    题目传送门题目大意:给你\(n^2\)颗糖,分给\(n\)人,使每个人的权值相等(第\(i\)块的权值为\(i\)),输出第\(i\)个人选的糖果集合,注意题目中说\(n\)为偶数。解题思路......
  • [??记录]agc002E Candy Piles
    agc的题好神啊。学校里想了个思路,回家开题解,才发现自己的思路离谱至极,浪费了这道题后面的思考。linktoatcoderlinktoLuogu题意:给定\(n\)堆石子,二人博弈,操作二选......
  • LeetCode 135. Candy
    贪心算法贪心策略:在每次遍历中,仅考虑并更新相邻一侧的大小关系classSolution{public:intcandy(vector<int>&ratings){intsize=ratings.size();......