poj 2229 Sumsets 【动态规划】

点击打开题目

Sumsets

Time Limit: 2000MS   Memory Limit: 200000K
Total Submissions: 13291   Accepted: 5324

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

7

Sample Output

6

题目翻译:给出一个数字n,给出一个集合{1,2,4,8,16,32,64。。。。},求n有多少种不同的由集合内的数字的加和情况。

解题思路:本以为是母函数,但是在网上搜了一下结果发现是递推,可以有前面推出后面的结果,原因是和2的指数关系有关。

#include<cstdio>
int dp[1000000+5]={0,1,2,2},i,n;
int main(){
    while(scanf("%d",&n)==1){
        for(i=4;i<=n+1;i+=2){
            dp[i-1]=dp[i-2];
            dp[i]=(dp[i-1]+dp[i>>1])%1000000000;
        }
        printf("%d\n",dp[n]);
    }
    return 0;
}
时间: 2024-09-28 19:05:37

poj 2229 Sumsets 【动态规划】的相关文章

POJ 2229 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+

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

UVa 10125:Sumsets

题目链接: UVa : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1066 poj :   http://poj.org/problem?id=2549 类型: 哈希, 二分查找 原题: Given S, a set of integers, find the largest d such that a

动态规划(DP)入门

零.先修课程 首先,在开始理解DP的思想前,你需要 1. 完成HDU里面的递推求解专题练习(For Beginner)那7道题(这些题很简单,题解请在博客中搜索),这对你理解DP有很大的帮助. 2. 对递归搜索(比如深度优先搜索,DFS)有一定了解. 一.递归与记忆化搜索 我们从POJ 3176入手来学习这一思想.(题目很短,请快速读完) 从上往下看,最大和值无非是往左走和往右走这两条路的较大者.这样,我们可以写出下面这个重要的递归函数:(这里i表示行,j表示列) int f(int i, in

【DP专辑】ACM动态规划总结

转载请注明出处,谢谢.   http://blog.csdn.net/cc_again?viewmode=list          ----------  Accagain  2014年5月15日 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. 本人动态规划博客地址:http://blog.csdn.net/cc_again/article/category/1261899 ******************

poj分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 3167 Cow Bowling【dp】

这是一道最最基础的dp题目,还记得当时看刘汝佳写的<入门经典>时,就是拿的这个做例子,不过牛人当然是一笔带过这么简单的例子. 状态转移方程为:dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]),如果要记录路径也简单,另外再用一个数组专门存放原始数组就好 原三角形是 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 dp三角形是 30 23 21 20 13 10 7 12 10 10 4  5    2   6    5 如果要记录路径,就是从dp[1][1

用动态规划解决矩形覆盖问题

问题描述 用动态规划解决矩形覆盖问题 ··有没有大神会那个矩阵覆盖问题啊?就是在POJ中的~~求解代码 描述 在平面上给出了n个点,现在需要用一些平行于坐标轴的矩形把这些点覆盖住.每个点都需要被覆盖,而且可以被覆盖多次.每个矩形都至少要覆盖两个点,而且处于矩形边界上的点也算作被矩形覆盖.注意:矩形的长宽都必须是正整数,也就是说矩形不能退化为线段或者点. 现在的问题是:怎样选择矩形,才能够使矩形的总面积最小. 输入 输入包括多组测试数据.每组测试数据的第一行给出n (2 <= n <= 15),

经典动态规划基础题-三角形最大和问题

三角形最大和问题 Time Limit:1000MS Memory Limit:65536K Total Submit:79 Accepted:22 Description 现在经常有一些数学问题困扰着小明.有如下一个三角形, 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 小明想求出从顶至底的某处的一条路径,使该路径所经过的数字的总和最大.现在想请你编一个程序实现这个问题. 说明: (1)每一步可沿左斜线向下或右斜线向下: (2)1<三角形行数≤100; (3)三角形中的数字为0,