这道题在论文里看到过,直接放论文原文吧 在BZOJ上是单组数据,而且数据范围符合,直接int读入排序就行了.代码: #include <cstdio> #include <algorithm> using namespace std; const int MAXN = 100005; int n, a[MAXN]; int main () { scanf("%d", &n); for(int i = 1; i <= n; ++i) scanf(&q…
1982: [Spoj 2021]Moving Pebbles Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 130  Solved: 88[Submit][Status][Discuss] Description 2021. Moving Pebbles Two players play the following game. At the beginning of the game they start with n (1<=n<=10000…
题目 Moving Pebbles Two players play the following game. At the beginning of the game they start with n (1<=n<=100000) piles of stones. At each step of the game, the player chooses a pile and remove at least one stone from this pile and move zero or m…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1982 [题目大意] 两个人玩游戏. 每次任选一堆,首先拿掉至少一个石头, 然后移动任意个石子到任意堆中. 谁不能移动了,谁就输了 [题解] 首先如果对于奇数堆,那么先手必胜,因为可以构建必败态 对于偶数的情况,如果是石子堆两两相同的对称局面,则为必败态,反之必胜 [代码] #include <cstdio> #include <algorithm> #include &…
给你N堆Stone,两个人玩游戏. 每次任选一堆,首先拿掉至少一个石头,然后移动任意个石子到任意堆中. 谁不能移动了,谁就输了... 以前在poj做过已经忘记了... 构造对称,选最多的一堆往其他堆分构造对称局面,先手必胜 一开始就对称,先手必败 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using…
必败状态是n为偶数并且数量相同的石子堆可以两两配对,因为这样后手可以模仿先手操作 其他状态一定可以由先手给后手一步拼出一个必败状态(用最大堆补) #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,a[N],ok=1; int read() { int r=0,f=1; char p=getchar(); while(…
这道题的题意BZ和POJ上的都不大清楚... 大概就是给出n堆石子,以及初始每堆石子的个数 两个玩家交替操作,每个操作可以任意在一堆中取任意多的石子 然后再从这堆里拿若干个石子放到某个当前还存在的堆里,当然这个操作也可以不做 问先手还是后手有必胜策略 博弈的题目果然是脑洞大啊... 最后的结论: 对于奇数堆,先手必胜 偶数堆时,先手败当且仅当所有的堆都可以分成两两相等的堆 证明大概就是: 首先考虑1堆的情况,先手显然胜 考虑两堆且相等的情况,如果先手拿完,后手把剩下一堆拿完:如果先手没拿完 后手…
题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h> using namespace std; typedef long long LL; template<typename T>inline void read(T &num) { char ch; while((ch=getchar())<'0'||ch>'9'); fo…
题面 中文题目,不解释: BZOJ传送门 Luogu传送门 分析 这题建图是显然的,拆点后iii和i′i'i′连容量为吞吐量的边,根据题目要求,111和nnn的吞吐量看作∞\infty∞. 然后用distdistdist表示到111的最小距离,对于满足dist[v]=dist[u]+w[u,v]dist[v]=dist[u]+w[u,v]dist[v]=dist[u]+w[u,v]的边,u′u'u′和vvv连容量为∞\infty∞的边.最后建一个超级源点和超级汇点,分别与111和n′n'n′连容…
题面 中文题面- BZOJ 传送门 Luogu 传送门 分析 这道题类似于BZOJ 3774 最优选择,然后这里有一篇博客写的很好- Today_Blue_Rainbow's Blog 应该看懂了吧-不懂的画画图,分分情况会发现-这连边-好妙啊 CODE #include <cstdio> #include <cstring> #include <algorithm> using namespace std; template<typename T>inli…