题意: n个连续排列的石子,每次只许拿连续的(中间没有空格)的k个,问你谁必胜 题解: 简单博弈,特判总数为0,k=1两种情况,其他情况先拿必胜,方法是拿掉中间的,然后对方怎么拿你镜面拿就行. #include<iostream> using namespace std; int main(){ int n,k; scanf("%d %d",&n,&k); ){ printf("Austin\n"); }){ ==){ printf(&q…
题意: 数一个金字塔里面有多少个正三角形. 题解: ans[n]=n*(n-1)*(n-2)*(n-3)/24 #include<bits/stdc++.h> using namespace std; typedef long long ll; ; )/; int main() { long long i,j,k,n,m,t; scanf("%lld",&t); while(t--) { scanf("%lld",&n); ll ans=…
题意: 有一个棋盘上,1是空格,0是障碍物,一开始每个空格里都有一只袋鼠,你可以命令所有袋鼠一起向上下左右一个方向走一格,一旦碰到边界或障碍物,袋鼠就不动,如果它后面有袋鼠这两个袋鼠就会挤进一个格子,棋盘最大20*20,要求你在50000步以内让所有的袋鼠挤到一个格子里面. 题解: 这个题真的是全场最佳,不多说了看代码吧. #include<stdio.h> #include<string.h> #include <bits/stdc++.h> using namesp…
题意: 若干个勇士,每个勇士只能杀特定的怪物.每个勇士只能杀1个怪,但是有一些药,喝了药之后能再杀一个,每个勇士只能喝一瓶药.问你最多杀多少怪. 题解: 按照如下建图套网络流板即可. 网上有题解说套DinicT了,我们队套kuangbin的dinic过了,不得不说kuangbin的板质量真的好. #include<bits/stdc++.h> using namespace std; #define ll long long #define MAXN 1500 //最大点数 #define M…
题面 题意:一堆有n个石子,编号从1⋯N排成一列,两个人Adrien 和Austin玩游戏,每次可以取1⋯K个连续编号的石子,Adrien先手,谁不能取了则输 题解:k==1时,显然和n奇偶相关,当k>1,先手的人总是可以把这n个石头分成两组相等数量的石头(从中间拿,自己控制奇偶),后手的人无论怎么操作,你都可以再 另一段中copy他的操作,这样保证了先手的人一定能有石头拿,所有先手必胜.注意特判n==0的情况 #include<bits/stdc++.h> using namespac…
2018ICPC南京网络赛 A. An Olympian Math Problem 题目描述:求\(\sum_{i=1}^{n} i\times i! \%n\) solution \[(n-1) \times (n-1)! \% n= (n-2)!(n^2-2n+1) \%n =(n-2)!\] \[(n-2+1)\times (n-2)! \% n= (n-3)!(n^2-3n+2) \%n =(n-3)! \times 2\] 以此类推,最终只剩下\(n-1\) 时间复杂度:\(O(1)\…
题意: 有一排n个石子(注意n可以为0),每次可以取1~K个连续的石子,Adrien先手,Austin后手,若谁不能取则谁输. 思路: (1) n为0时的情况进行特判,后手必胜. (2) 当k=1时,很容易可以发现:若n为偶数则后手赢,n为奇数则先手赢. (3) 当k>1时,只要先手保证这一排石子两边对称,则后手必败,所以可知k>1时先手必胜. #include<bits/stdc++.h> using namespace std; int main() { ios::sync_w…
题意: n个石头再1-n的位置上,两个人轮流取时候,必须取连续的一段,最多取k个,不能取为输,问谁会赢 解析: 当k大于等于2时,先手总能把石头分成相等的两部分,此时后手无论怎么走,先手在对称的位置选择同样的策略即可 代码: #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <vector> #include <cs…
题目: 题意:1-N个石子每次只能取连续的1-K个问输赢.(一开始以为只是个简简单单的巴什游戏,激动的提交了一发wr了,再读了一遍题才发现是只能取连续的) 题解:当n==0或者k==1&&n&1==1 后手才会赢,其他情况都是先手赢. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n,k;scanf("%d%d",&n,&k); 6 if…
可能上一次秦皇岛拿了银,有了偶像包袱? 打的时候感觉状态不是很好. 第一题,让你每次将连续一段区间的石头都拿掉.. 然后让你做个博弈. 橘子一顿分析,认为k+1的倍数都是输. 这时,我们以及默认i+1的石头会替代i位置的石头了(已经是错了) 然后交一发"NO-Wrong Answer"几个红颜色的字给了我们一个当头棒. 然后问了一发,表示说i+1不动.. 那就很绝望了..咋做啊,不会啊.. 然后就自闭到40分钟的时候,贪心了一波,除了k=1的时候,都贪心先手赢. 然后就Yes了(其实当…