YCJSOI1472 质数取石子(博弈dp)
2017-11-04 17:02
288 查看
题意
略.分析
递推.枚举每一个比当前小的素数进行计算.CODE
#include<bits/stdc++.h> using namespace std; #define M 20000 bool mark[M+5]; int cnt[M+5],A[M+5]= {0,2,3,5},l=3; int main() { for(int i=7; i<=M; i+=2) { bool f=1; for(int j=2; j<=l; j++) if(i%A[j]==0) { f=0; break; } if(f)A[++l]=i; } A[++l]=20011; mark[0]=mark[1]=0; cnt[1]=cnt[0]=0; for(int i=2; i<=M; i++) { for(int j=1; i>=A[j]; j++) if(!mark[i-A[j]]) { mark[i]=1; cnt[i]=M; for(j=1; i>=A[j]; j++) if(!mark[i-A[j]]&&cnt[i]>cnt[i-A[j]]+1) cnt[i]=cnt[i-A[j]]+1; break; } if(!mark[i]) { cnt[i]=0; for(int j=1; i>=A[j]; j++) if(mark[i-A[j]]&&cnt[i]<cnt[i-A[j]]+1) cnt[i]=cnt[i-A[j]]+1; } } puts("-1\n-1"); for(int i=2; i<=M; i++)printf("%d\n",mark[i]?cnt[i]:-1); return 0; }
相关文章推荐
- Cogs 56. 质数取石子(博弈)
- hdu3649(取石子博弈+dp)
- rqnoj-116-质数取石子-dp
- codevs1048 石子归并(区间DP)
- -----区间DP 石子的合并
- 取石子游戏_hdu_2516(博弈规律).java
- HDU-1527-取石子游戏【威佐夫博弈】
- nyoj 737 石子合并(一)(区间DP)
- Fibonacci Nim (斐波那契取石子博弈)
- uva 10404 Bachet's Game(dp 博弈)
- [Swust OJ 581]--彩色的石子(状压dp)
- poj 2068 Nim(博弈dp)
- 【 HDU 2177 】取(2堆)石子游戏 (威佐夫博弈)
- hdu 1848 博弈 难题 取石子 三堆
- 蓝桥杯 —— 石子合并问题 —— Dp
- Hrbust 1819 石子合并问题--圆形版【环形区间Dp】
- 取石子游戏(威佐夫博弈)
- poj 1067 取石子游戏(威佐夫博弈)
- UVA 10891 Game of Sum 博弈DP -
- hdu 2516 取石子游戏 (FIB博弈)