FJNU摸底赛_acdream1684(博弈)

题意:

给出n个数字的集合;

然后每次可以从中去两个数a和b ,要求这两个的差(大-小)是集合里没有,并把a-b放进数组;

谁最后没有数字可以取就输了;

问先手赢还是先手输;

思路:

首先求所有数字的最大公约数g,和所有数字中的最大值m;

比如最大公约数是2,比如原先数组是2,6,8

那么集合只可能出现2,4,6,8;

同样如果集合的最大公约数是3

那么集合只可能出现3,6,9,12.......

那么m/g就是这个集合最终可以有几个数字;

减掉原有的n个,就是还可以放进去几个;

判断一下奇偶性就知道先手是输是赢了;

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int N = 1005;
int n, num[N];

int gcd(int x, int y) {
	return y == 0 ? x :gcd (y, x % y);
}
int main() {
	int t;
	scanf("%d",&t);
	while(t--) {
		scanf("%d",&n);
		scanf("%d",&num[0]);
		int g = num[0];
		int m = num[0];
		for(int i = 1; i < n; i++) {
			scanf("%d",&num[i]);
			g = gcd(g,num[i]);
			m = max(m, num[i]);
		}
		if(((m/g) - n) % 2)
			printf("Win\n");
		else
			printf("Lose\n");
	}
}
时间: 2024-11-03 21:49:02

FJNU摸底赛_acdream1684(博弈)的相关文章

[ACM]辽宁省赛2010 (HZNU 1081-1089)

虽然退役了,但偶尔水几题醒醒脑还是不错的=_= 1085 Intermediary 暂时还没做 1081: Dinner 时间限制: 1 Sec  内存限制: 32 MB提交: 5  解决: 3[提交][状态][讨论版] [Edit] [TestData] 题目描述 Little A is one member of ACM team. He had just won the gold in World Final. To celebrate, he decided to invite all

【转】acm总结帖_By AekdyCoin

转自:http://hi.baidu.com/aekdycoin/item/c5bd27f5834caf09d89e72d7 各路大牛都在中国大陆的5个赛区结束以后纷纷发出了退役帖,总结帖,或功德圆满,或死不瞑目,而这或许又会造就明年的各种“炸尸”风波.为了考虑在发退役贴以后明年我也成为“僵尸”的可能性,于是改名曰“总结贴”,不提比赛细节,不提比赛流水账,权当是大学本科生涯中acm生活的点滴记录…… (1)入门篇甲 PS:以下内容为 Ctrl+a,c,v的产物 =================

【AC大牛陈鸿的ACM总结贴】【ID AekdyCoin】人家当初也一样是菜鸟

acm总结帖_By AekdyCoin 各路大牛都在中国大陆的5个赛区结束以后纷纷发出了退役帖,总结帖,或功德圆满,或死不瞑目,而这也许又会造就明年的各种"炸尸"风波.为了考虑在发退役贴以后明年我也成为"僵尸"的可能性,于是改名曰"总结贴",不提比赛细节,不提比赛流水账,权当是大学本科生涯中acm生活的点滴记录-- (1)入门篇甲 PS:下面内容为 Ctrl+a,c,v的产物 ===================================

2019年FJNU低编赛 G题(dfs博弈)

###题目链接### 题目大意: 有一个 0 ~ n+1 的数轴,Alice 站在 0 点处,Bob 站在 n+1 点处.在 1 ~ n 上各有着权值. Alice 每次向右移动 1 格或两格 ,Bob 每次向左移动 1 格或 2 格(他们一定要移动),Alice 移动到 n+1 处停止,Bob 移动到 0 处停止,直到他们都停止的时候,此时若 Alice 所经过的数值总和大于 Bob 的数值总和,则 Alice 胜出,反则 Bob 胜出.Alice 先出手,两人足够聪明,走到的数值必须拿走,而

HDUOJ--------A simple stone game(尼姆博弈扩展)(2008北京现场赛A题)

A simple stone game                                                                                                       Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                             

山东省赛-博弈-Game

id=1582" target="_blank" style="font-size:18px">点击打开题目链接 非常明显的一道博弈题目,可是在求SG的时候,子状态写错了,一直都没有AC.最后还是水过去的额.比赛后还是自己写了一遍: # include <cstdio> # include <cstring> # include <iostream> using namespace std; int sg[1200

4.3 省选模拟赛 石子游戏 树上博弈

注意观察题目 每个点都只能将石子给自己的两个儿子 且石子个数>=1. 显然 这是一个阶梯NIM. 只有和最后一层的奇偶性相同的层才会有贡献 证明也很显然. 那么这其实就是近乎NIM游戏了 胜负自然取决于所有有贡献的石子堆的异或和. 但是 上午我傻了的一点 没有分清SG函数和NIM游戏的联系. 在NIM游戏中SG函数其实就是每个有贡献的石子堆的石子数. 再来看这道题 由于异或和一定 暴力枚举移动哪一堆石子 判断是否可行即可. 这个操作其实是 NIM游戏的证明问题了.解决的方案是 观察一下移动后造成

繁华模拟赛 David与Vincent的博弈游戏

#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; const int maxn = 100005; struct edge{ int to; int nxt; }; int n,g[maxn],dep[maxn],dpd[maxn],dpv[maxn]; int head[m

ACdream HUT新生摸底训练赛 E - 娜娜梦游仙境系列——莫名其妙的插曲 数论

解题思路:其实就是找能组成的最大集合.max(a[1],a[2],a[3].........a[n])/gcd(a[1],a[2],a[3],......a[n]) 解题代码: 1 // File Name: e.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月13日 星期一 13时56分11秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #i