题目链接

题目大意

给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为0的石子则输

题目思路

本来以为是nim博弈打sg表什么的,结果其实是一个思维题

结论:如果最小堆的数量小于等于n/2则,先手胜,否则后手胜

我们考虑最小堆数量超过n/2的情况。那么此时先手不管如何选取,都会选到一个最小堆,由于要求每轮取得石子数量大于0 ,那么最小堆的石子数必然会减少,而且此时取完后最小堆的数量就不会超过n/2

然后到了下一轮,那么此时后手可以选择不包含最小堆的n/2堆,把它们全部变成最小堆,那么此时显然最小堆数量又将大于n/2。那么就将进入一个循环。

但是这个循环总会有终止的时刻,也就是当最小堆石子数量为0且堆数超过n/2时,游戏结束,最后操作的人获胜。观察上面的过程,我们发现只有后手才能把最小堆的数量变为超过n/2,而先手只能被动地将最小值变小,所以最后胜利者一定是后手。

代码

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#define fi first
#define se second
#define debug printf(" I am here\n");
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=1e4+5,inf=0x3f3f3f3f;
const double eps=1e-10;
int n,a[maxn],mi=inf,cnt;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
mi=min(mi,a[i]);
}
for(int i=1;i<=n;i++){//计算有多少个最小堆
cnt+=(mi==a[i]);
}
bool flag=(cnt<=n/2)?1:0;
printf(flag?"Alice\n":"Bob\n");
return 0;
}

参考链接

最新文章

  1. Appium环境搭建
  2. framework各版本对比
  3. C#中gridView常用属性和技巧介绍
  4. adaboost学习资料收集
  5. 基于htmlparser实现网页内容解析
  6. CSS圆角样式
  7. 清除在Windows下访问共享文件夹时的登录信息
  8. Hdu 3363 Ice-sugar Gourd(对称,圆)
  9. 【转】人工智能(AI)资料大全
  10. BOM数据基础 - Mobox物料编码管理及实现
  11. JavaScript基础学习(八)&mdash;事件
  12. IO多路复用,同步,异步,阻塞和非阻塞 区别(转)
  13. FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
  14. Android为TV端助力(转载)
  15. 四 Struts2 反射实现
  16. [面试]中高级测试工程师必备,月薪15K+
  17. thymeleaf th:href 多个参数传递格式
  18. python私有属性和私有方法
  19. bzoj 4811: [Ynoi2017]由乃的OJ
  20. iOS 数据持久化-- FMDB

热门文章

  1. vue 在nginx下页面刷新出现404问题解决和在nginx下页面加载了js但是页面显示空白问题解决
  2. D. Design Tutorial: Inverse the Problem 解析含快速解法(MST、LCA、思維)
  3. UWP仿网易云音乐之1-TitleBar
  4. 12 Servlet_04 Servlet增删改查 静态页面与动态页面 EL表达式 table表格的一些样式
  5. 一篇搞定Java集合类原理
  6. python数据类型之tuple(元组)
  7. 动态规划之KMP字符匹配算法
  8. 如何对List集合中的对象进行按某个属性排序
  9. leetcode116:search-for-a-range
  10. 基于gin的golang web开发:使用数据库事务