D. Tokitsukaze, CSL and Stone Game ( 取石子游戏?no,更像棋盘游戏 )
题意: 有 n 堆石子,每堆有 a[ i ] 个,然后每次 操作 可以选择任意一堆 石子,取走一个。 若你取完了之后,存在两堆石子,他们的个数一样多,你就输了( 包括两堆都是0个), 或者你不能取了,你也输了。
解: 1、若只有一堆,那就判奇偶就行了。
2、若存在 至少 两对 相等个数的 堆, 或者 两堆个数 为0 的堆,或者3堆石子都相等,先手必败( 两对的话,至多只能 使一对,变成不等的。)
3、 按升序排序,若存在两堆个数相等,都为 a,且有一堆的石子数为 a - 1 那么先生必败。 因为 你只能拿走一个,你拿走了一个,那你就和a - 1那堆相等了,你不拿,那你就和a那堆相等了。
无论如何都会有两堆相等。
4、若不存在上述情况, 那么,总的可以移动的步数是固定的。 按升序 排好后, 对于 第 i 堆,它能移动的步数 就是
a[ i ] - i - 1,然后把总的可以移动的步数加起来 判断奇偶就行了。
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define LL long long
#define ULL unsigned long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define dep(i,j,k) for(int i=k;i>=j;i--)
#define INF 0x3f3f3f3f
#define mem(i,j) memset(i,j,sizeof(i))
#define make(i,j) make_pair(i,j)
#define pb push_back
#define Pi acos(-1.0)
using namespace std;
const int N = 2e5 + ;
LL a[N];
int main() {
int n;
scanf("%d", &n);
LL sum = ;
rep(i, , n) scanf("%I64d", &a[i]), sum += a[i];
if(n == ){
if(a[] % == ) puts("cslnb");
else puts("sjfnb"); return ;
}
sort(a + , a + + n);
int cnt = ;
rep(i, , n) {
if(a[i] == a[i - ]) {
cnt++;
if(i > && a[i - ] + == a[i]) {
puts("cslnb"); return ;
}
}
}
if(cnt >= || n >= && a[] == ) {
puts("cslnb"); return ;
}
sum -= n * (n - ) / ; ///0 + 1 + 2 + 3 + ……+ (n - 1) = n * ( n - 1) / 2;
if(sum % == ) {
puts("cslnb");
}
else {
puts("sjfnb");
}
return ;
}
D. Tokitsukaze, CSL and Stone Game ( 取石子游戏?no,更像棋盘游戏 )的更多相关文章
- [Codeforces 1191D] Tokitsukaze, CSL and Stone Game(博弈论)
[Codeforces 1191D] Tokitsukaze, CSL and Stone Game(博弈论) 题面 有n堆石子,两个人轮流取石子,一次只能从某堆里取一颗.如果某个人取的时候已经没有石 ...
- Codeforces Round #573 (Div. 2) D. Tokitsukaze, CSL and Stone Game (博弈,思维)
D. Tokitsukaze, CSL and Stone Game time limit per test1 second memory limit per test256 megabytes in ...
- Games:取石子游戏(POJ 1067)
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37662 Accepted: 12594 Descripti ...
- HDU 2516 取石子游戏(斐波那契博弈)
取石子游戏 Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- hdu 1527 取石子游戏(Wythoff Game)
题意:Wythoff Game 思路:Wythoff Game #include<iostream> #include<stdio.h> #include<math.h& ...
- HDU 2516 取石子游戏(FIB博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 1874: [BeiJing2009 WinterCamp]取石子游戏 - BZOJ
Description小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问 ...
- HDU-1527 取石子游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1527 交换 :可实现. if( n < m ) { n^=m; m^=n; n^=m; } (三)尼姆博 ...
- bzoj 1874 取石子游戏 题解 & SG函数初探
[原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 334 Solved ...
- HDU 2516 取石子游戏 (博弈论)
取石子游戏 Problem Description 1堆石子有n个,两人轮流取.先取者第1次能够取随意多个,但不能所有取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出" ...
随机推荐
- Firefox、IE、chrome浏览器和驱动下载地址
一.Firefox和驱动下载地址 selenium2.X最高支持的Firefox版本为46,使用selenium2.X的话不需要下载火狐驱动,只需要配置火狐的启动路径即可. Selenium3.0开始 ...
- 2018.08.10【省赛&提高A组模拟】比赛总结
题解 这次题目可真是太难了! 糟糕的运气使我AK的步伐寸步难行(士气严重下降). T1 这题还是比较水的(尽管我比赛时只拿了50分) 一些大佬们说:这题只是一道简单的暴力题,枚举l+二分r 就可以了. ...
- redis 学习(11)-- redis pipeline
redis pipeline 什么是流水线(pipeline) 首先来看 redis 执行一次操作所需要的时间: 1 次时间 = 1 次网络时间 + 1次命令时间 执行 n 次就需要: n 次时间 = ...
- ionic 提示 Error: Could not find gradle wrapper within Android SDK.
Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK. 到And ...
- Git复习(五)之多人协作、git push失败、git pull失败
多人协作 多人协作时,大家都会往master和dev分支上推送各自的修改. 现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆: $ ...
- mybatis和spring的整合
Mybatis与Spring的集成 1.配置Spring环境 创建maven工程 pom.xml导入依赖 <project xmlns="http://maven.apache.org ...
- Qt 按键键值 与 相关字符串 的映射表(转)
Qt快捷键 映射 "Esc",/*Qt::Key_Escape 0x01000000 */ "Tab",/*Qt::Key_Tab 0x01000001 ...
- springboot(十六)-swagger2
SpringBoot整合Swagger2 相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API ...
- vue 组件基本使用
组件的基本使用 注册组件 注册组件就是利用Vue.component()方法,先传入一个自定义组件的名字,然后传入这个组件的配置.vue.component()注册的全局组件 Vue.componen ...
- 获取图书isbn信息 共享图书开发 图书信息接口开发过程中的心得体会
最近做一个图书共享的项目,需要用户扫一扫书籍后面的一维码,获取到书籍的isbn号码,然后通过这个isbn号码能够直接获取到这本书的名字.简介.价格.图片等信息. 于是百度搜了下,之前很多的豆瓣的接口, ...