poj 2229 动态规划
来源:互联网 发布:质量好的淘宝店推荐 编辑:程序博客网 时间:2024/06/05 04:23
题目链接点击打开链接
Sumsets
Time Limit: 2000MS Memory Limit: 200000KTotal Submissions: 19456 Accepted: 7610
Description
Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
Input
A single line with a single integer, N.
Output
The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation).
Sample Input
7
Sample Output
6
Source
USACO 2005 January Silver
问题分析:
设a[n]为和为 n 的种类数;
根据题目可知,加数为2的N次方,即 n 为奇数时等于它前一个数 n-1 的种类数 a[n-1] ,若 n 为偶数时分加数中有无 1 讨论,即关键是对 n 为偶数时进行讨论:
1.n为奇数,a[n]=a[n-1]
2.n为偶数:
(1)如果加数里含1,则一定至少有两个1,即对n-2的每一个加数式后面 +1+1,总类数为a[n-2];
(2)如果加数里没有1,即对n/2的每一个加数式乘以2,总类数为a[n/2];
所以总的种类数为:a[n]=a[n-2]+a[n/2];
根据题目可知,加数为2的N次方,即 n 为奇数时等于它前一个数 n-1 的种类数 a[n-1] ,若 n 为偶数时分加数中有无 1 讨论,即关键是对 n 为偶数时进行讨论:
1.n为奇数,a[n]=a[n-1]
2.n为偶数:
(1)如果加数里含1,则一定至少有两个1,即对n-2的每一个加数式后面 +1+1,总类数为a[n-2];
(2)如果加数里没有1,即对n/2的每一个加数式乘以2,总类数为a[n/2];
所以总的种类数为:a[n]=a[n-2]+a[n/2];
#include<iostream>using namespace std;long long int a[1000010];int main(){ a[1]=1; a[2]=2; for(int i=3;i<=1000010;i++) { if(i%2==1) a[i]=a[i-1]; else a[i]=a[i-2]+a[i/2]; a[i]=a[i]%1000000000; } int n; while(cin>>n) { cout<<a[n]<<endl; } return 0;}
阅读全文
0 0
- poj 2229 动态规划
- POJ 2229 动态规划
- poj 2229 动态规划
- poj 2229 Sumsets 【动态规划】
- POJ - 2229 Sumsets (动态规划)
- poj 2229 (动态规划,找规律)
- poj 2229,简单的动态规划
- POJ 2229 Sumsets 动态规划 详解
- poj 2411 动态规划
- Poj 1157(动态规划)
- POJ 1651动态规划
- Poj 1221 动态规划
- POJ 3186 动态规划
- [poj]动态规划2479
- [poj]动态规划1015
- [poj] 动态规划 1141
- POJ 1088 动态规划
- poj 1636 动态规划
- 283. Move Zeroes
- ubuntu下执行apt-get update 报异常
- 栈在表达式计算过程中的应用
- HPU DFS + BFS 专项练习A
- hdu 5685 2016"百度之星"
- poj 2229 动态规划
- linux 安装jdk1.7
- 多线程下的观察者模式--Java实现
- mybatis-generator 代码自动生成工具
- 百练noi 8785:装箱问题
- ZOJ 1364 Machine Schedule (二分图最大匹配)
- 深度学习在视频动作识别应用
- 一起Talk Android吧(第三十四回:Android中的Activity六)
- 1. vue.js-饿了吗全套