nyoj 708 ones 动态规划
2014-04-29 12:25
197 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=708
状态转移方程的思路:对于一个数N,可以是N - 1的状态+1 得到,另外,也可以是(n / 2) * (1 + 1)得到,同理对于任意的奇数p,都有如果n可以整除p,都有f(n / p) + f(p)
状态转移方程的思路:对于一个数N,可以是N - 1的状态+1 得到,另外,也可以是(n / 2) * (1 + 1)得到,同理对于任意的奇数p,都有如果n可以整除p,都有f(n / p) + f(p)
#include<stdio.h> int dp[10010]; bool isprime[101]; int prime[101]; int total; void sol() { int i; for(i = 4; i < 10010; i++) { int min = dp[i - 1] + 1; int j; for(j = 0; prime[j] < i && j < total; j ++) { if(i % prime[j] == 0) { min = min < (dp[i / prime[j]] + dp[prime[j]]) ? min : dp[i / prime[j]] + dp[prime[j]]; } } dp[i] = min; } } int main() { int n; dp[1] = 1; dp[2] = 2; dp[3] = 3; int i, j; for(i = 2; i * i < 100; i++) { if(isprime[i] == 0) { for(j = i + i; j < 100; j+= i) { isprime[j] = 1; } } } for(i = 2; i < 100; i++) { if(isprime[i] == 0) prime[total ++] = i; } sol(); while(scanf("%d",&n) != EOF) { printf("%d\n", dp ); } return 0; }
相关文章推荐
- nyoj 708 ones
- Nyoj 708 Ones
- NYOJ 708 ones
- nyoj-708 ones【线性dp】
- NYOJ 题目708 ones(dp水)
- NYOJ 708 ones
- NYOJ 708 ones
- ones(nyoj 708)
- NYOJ 708 ones
- NYOJ 16 矩形嵌套(动态规划 or 贪心)
- NYOJ36&&南阳理工oj_36(动态规划)
- NYOJ 980 格子刷油漆 动态规划
- nyoj ones
- nyoj-动态规划-234-吃土豆-201308131021
- NYOJ 题目37 回文字符串(动态规划)
- NYOJ469(动态规划)
- nyoj--37--回文字符串(动态规划)
- nyoj--1184--为了肾六(动态规划+滚动数组)
- NYOJ--36(动态规划)-题目----------------------------- 最长公共子序列
- NYOJ-745(动态规划)---蚂蚁的难题(二)