首页 > 其他分享 >[??记录]arc137C Distinct Numbers

[??记录]arc137C Distinct Numbers

时间:2022-11-04 22:15:40浏览次数:50  
标签:状态 必胜 Distinct 最大值 arc137C int 次大值 Numbers printf

这段时间第一道没能自己想出来的题。

题意:给定 \(n\) 个数,二人玩游戏,每次把全局最大数减小并改成一个当前未出现的数,不能操作者败。求胜者。

首先我们来研究一次操作时的情景。首先,当其它值不变,最大值大于次大值加一时,当前状态能走到所有最大值为次大值加一时的状态。这是一个有意思的性质,启示我们去看看最大值等于次大值加一的情景。

如果这是一个必胜态,则它能走到一个必败态,则原情况也能走到一个必败态;若这是一个必败态,则原情况可以直接走到这里。所以,原情况是必胜态。

那么情况就明晰了:当最大值大于次大值加一时,当前情况为必胜态;否则,两个人每次操作完全局最大值都等于次大值加一,这个可以直接递推找到胜者。

感觉这题的关键在这个“决策包容性”,即若一个状态能走到另一个状态能走到的所有后继状态,则这样的状态一定是必胜态。这或许是个经典结论,但我才知道。

#include <cstdio>
using namespace std;
const int M = 300005;
int a[M], n;
int main(){
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
    if(a[n] - a[n-1] >= 2) {printf("Alice\n"); return 0;}
    int res = a[n] - n;
    if(res % 2 == 0) printf("Alice\n");
    else printf("Bob\n");
    return 0;
}

标签:状态,必胜,Distinct,最大值,arc137C,int,次大值,Numbers,printf
From: https://www.cnblogs.com/purplevine/p/16859249.html

相关文章

  • CodeForces - 914C Travelling Salesman and Special Numbers
    题意:给出一个二进制数a,每次操作将当前数变成其二进制下1的个数,若干次操作后可以将其变为1.给定k,求不大于a的数中,经过k次操作能变成1的数的数量。解:观察一下这个操作,可以求......
  • distinct去重的使用
    一、语法格式distinct只会查询指定的字段,别的字段是不是查询的;格式:select distinct 字段 from查看一个去重的字段时,distinct后面跟一个字段,查看多个去重字段时,dis......
  • 115.distinct-subsequence 不同的子序列
    问题描述115.不同的子序列解题思路dp[i][j]表示考虑考虑t的前j个字符在s的前i个字符中的出现个数:if(s[i-1]==t[j-1])dp[i][j]=dp[i-1][j-1]+dp[i-......
  • 【POJ1430】Binary Stirling Numbers(第二类斯特林数,组合数)
    求\(\begin{Bmatrix}n\\m\end{Bmatrix}\bmod2\)的值。由第二类斯特林数的递推公式:\[\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m\begi......
  • 8.CF446C DZY Loves Fibonacci Numbers 线段树Lazy标记
    8.CF446CDZYLovesFibonacciNumbers线段树Lazy标记给定序列,要求支持区间对应项加斐波那契数列,区间求和洛谷传送门:​​CF446CDZYLovesFibonacciNumbers-洛谷|计......
  • Codeforces Round #673 (Div. 2) C. k-Amazing Numbers
    题面Youaregivenanarrayaconsistingofnintegersnumberedfrom1ton.Let’sdefinethek-amazingnumberofthearrayastheminimumnumberthatoccurs......
  • mysqldistinct隐患
    mysqldistinct语句优化1.where字段的索引。2.建议查询增加上一个datetime范围。本回答由网友推荐mysqldistinct去重问题请教。selectip,spare2,count(distinctconcat(ip......
  • How many prime numbers
    题目链接Howmanyprimenumbers大素数的判定解题思路miller_rabinmiller_rabin是一种概率性素数测试,原理基于费马素数测试,即如果\(n\)为素数,则在\(1\simn\)......
  • I Love Big Numbers !(高精度)
    题目链接题意:多组数据输入也就是C++中的:intn;while(cin>>n){代码块}对于每个数据输出其阶乘的各位上的数字之和。大眼一看,没有思路,那就百度把。百度解法......
  • mongodb聚合分组返回最新一条和count distinct查询
    db.collection.aggregate([{$group:{"_id":"$city","unique_count":{$addToSet:"$zipcode"}......