上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页
摘要: http://poj.org/problem?id=2068 #include #include #include #include using namespace std; int dp[25][(1<<13)+5];//dp[i][j]表示轮到第i个人取时,剩j个石头 int n,s,m[25]; int DFS(int pos,int remain) { if(dp[pos][r... 阅读全文
posted @ 2016-03-07 02:01 &ATM 阅读(241) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1678 #include #include #include #include using namespace std; const int INF=10e8; int n,a,b,p[10005],dp[10005]; int dfs(int x) { if(dp[x]!=-INF) return dp[x]; ... 阅读全文
posted @ 2016-03-07 02:00 &ATM 阅读(269) 评论(0) 推荐(0) 编辑
摘要: (Nim积相关资料来自论文曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》) 关于Nim积计算的两个函数流程: 代码实现如下: int m[2][2]={0,0,0,1}; int Nim_Multi_Power(int x,int y) { if(x=(1=(1 #include using namespace std; in... 阅读全文
posted @ 2016-03-07 01:57 &ATM 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include #include using namespace std; int sg[2010]; int get_sg(int n) { if(n<0) return 0; if(sg[n]!=-1) return sg[n]; bool vis[2010]; //莫名其妙! //vis[]数组要声明在函数里,如果放... 阅读全文
posted @ 2016-03-05 03:12 &ATM 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include #include using namespace std; int sg[205][205]; bool vis[300]; int get_sg(int n,int m) { if(sg[n][m]!=-1) return sg[n][m]; for(int i=2;i<=n-i;i++) vis... 阅读全文
posted @ 2016-03-05 03:10 &ATM 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include using namespace std; int main() { int n; while(scanf("%d",&n)&&n) {//alice先把环破坏,变成链,然后bob只要在链中间取1或2个 //连续的coins,让链变成左右对称的两条,bob就必胜 if(n==1||n==2) ... 阅读全文
posted @ 2016-03-05 03:09 &ATM 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include using namespace std; typedef long long ll; int main() { ll n; while(~scanf("%I64d",&n)) {//其实算是 贪心了吧 //先手想赢,他会x2,这样子才能尽量避免让后手赢 //后手想赢,他就会x9,只有乘最大的,他胜算才最大 ... 阅读全文
posted @ 2016-03-05 03:07 &ATM 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include using namespace std; int main() { int n,k[1005]; int sum,cnt; while(scanf("%d",&n)&&n) { sum=0,cnt=0; for(int i=1;i=(sum^k[i])) //sum^k[i]要加括号()... 阅读全文
posted @ 2016-03-05 03:06 &ATM 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #include #include #include using namespace std; int a[1005]; int main() { int n; while(~scanf("%d",&n)) {//要后者胜,只要s=0,那么n=(m+1)*r,输出最小的m即可 int len=0; bool flag=0; ... 阅读全文
posted @ 2016-03-05 03:05 &ATM 阅读(220) 评论(0) 推荐(0) 编辑
摘要: POJ 1704 题目链接 关于阶梯博弈有如下定理: 将所有奇数阶梯看作n堆石头,做Nim,将石头从奇数堆移动到偶数堆看作取走石头,同样地,异或值不为0(利己态)时,先手必胜。 定理证明看此博:http://blog.csdn.net/kk303/article/details/6692506 以下是POJ 1704的AC代码: //棋子只能往左走(最左有界线),可以走任意多格(>=1) /... 阅读全文
posted @ 2016-03-05 02:56 &ATM 阅读(287) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页
……