rqnoj-116-质数取石子
2013-10-15 07:55
246 查看
需要详细题解就说一声。
#include<cstdio> int ss[20010],flag[20010],f[20010]; bool v[20010],hash[20010]; int n,num=1; int main() { freopen("1.in","r",stdin); freopen("1.out","w",stdout); for(int i=2;i<=20000;i++) { if(!hash[i]) { ss[num++]=i; for(int j=i*i;j<=20000;j+=i) hash[j]=true; } flag[i]=num-1; } for(int i=2;i<=20000;i++) for(int j=flag[i];j>=1;j--) if(!v[i-ss[j]]) { v[i]=true; break; } //for(int i=1;i<=20;i++) if(v[i]) printf("%d ",i); for(int i=2;i<=20000;i++) { if(v[i]) { num=30000; for(int j=flag[i];j>=1;j--) { if(!v[i-ss[j]] && f[i-ss[j]] < num) { num=f[i-ss[j]]; } } f[i]=num+1; } else { num=-30000; for(int j=flag[i];j>=1;j--) { if(f[i-ss[j]] > num) { num=f[i-ss[j]]; } } f[i]=num+1; } } scanf("%d",&n); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(v[x]) printf("%d\n",f[x]); else printf("-1\n"); } }
相关文章推荐
- rqnoj-116-质数取石子-dp
- Rqnoj116 质数取石子
- Cogs 56. 质数取石子(博弈)
- rqnoj 116
- RQNOJ PID36 数石子
- RQNOJ 石子合并
- YCJSOI1472 质数取石子(博弈dp)
- 质数取石子
- 数石子RQNOJ 并查集
- [RQNOJ36]数石子
- rqnoj-36-数石子
- RQNOJ-36 数石子
- RQNOJ 36 数石子 解题报告
- 题目:数石子 rqnoj 36
- 【COGS 56】质数取石子
- uva 116(动态规划起步第三天 DAG)
- hdu 2516 取石子游戏 Fibonacci博弈 入门题
- HRBUST 1819 石子合并问题--圆形版
- 快速求质数(C语言描述)
- 求质数