poj 2229
2016-01-05 17:02
281 查看
Sumsets
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).
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
Sample Output
Source
USACO 2005 January Silver
有两种做法
第一种是比较暴力的完全背包:
设状态dp[i]为在总和为i的情况下符合题意的方法总数,因为n不超过2 ^ 20,所以可以把这20个数看成是物品,则可以用完全背包的方法写出状态方程
dp[i] = dp[i - (1 << j)] ; ((1 << j) <= n)
View Code
Time Limit: 2000MS | Memory Limit: 200000K | |
Total Submissions: 15105 | Accepted: 6017 |
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).
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
有两种做法
第一种是比较暴力的完全背包:
设状态dp[i]为在总和为i的情况下符合题意的方法总数,因为n不超过2 ^ 20,所以可以把这20个数看成是物品,则可以用完全背包的方法写出状态方程
dp[i] = dp[i - (1 << j)] ; ((1 << j) <= n)
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn = 1e6 + 7; const int mod = 1e9; int dp[maxn]; int main() { int n; scanf("%d", &n); dp[0] = 1; for (int i = 1; i <= n; ++i) { if (i % 2 == 1) { dp[i] = dp[i - 1]; } else { dp[i] = (dp[i - 2] + dp[i / 2]) % mod; } } printf("%d\n", dp ); return 0; }
View Code
相关文章推荐
- python+interface testing 读写Excel需要的包
- IE登陆局域网,记住错误密码的解决方法
- Android瀑布流StaggeredGridView学习研究
- ios 添加字体包
- apache开源项目--kylin
- LeetCode Pascal's Triangle
- mysql中FIND_IN_SET的使用方法
- mysqlbinlog抽取二进制日志中某库某表的日志
- python--list和tuple类型--2
- Sql:Insert插入数据集
- Sublime Text 3汉化
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- 用UIScroView实现图片的滚动
- How to Disable SharePoint Sync Function
- Matlab中的图形句柄(转载)
- 【初级】linux mkdir 命令详解及使用方法实战
- 火车头采集器
- 微信的redirect_uri参数错误解决办法
- sony -SVE14AE13T型号笔记本win8改装win7系统
- 贝叶斯网络模型具体作用