一、题目

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

二、思路&心得

  • DP问题,先讨论下起始情况:当n = 1的时候,只有1种;当n = 2的时候,有两种;
  • 当n为奇数时,将n - 1的所有情形都加上1即可以得到n时的个数。dp[n] = dp[n - 1];
  • 当n为偶数时,又分为两种情况:若式子含有1,则这种情况的个数为dp[n - 1];若式子不包含1,即全都是偶数,则将所有加数都除以2,可得到个数为dp[n / 2]的值;
  • 题目中要求的输出为实际值的最后九位数字,所以每次计算时要对1000000000取模。

三、代码

#include<stdio.h>
const int MAX_N = 1000005;
const int mod  = 1000000000;int dp[MAX_N];int f(int n) {for (int i = 3; i <= n; i ++) {if (i & 1) dp[i] = dp[i - 1];else dp[i] = (dp[i - 1] + dp[i / 2] ) % mod;}return dp[n];
}int main() {int N;dp[1] = 1, dp[2] = 2;while (~scanf("%d", &N)) {printf("%d\n", f(N));}return 0;
}

转载于:https://www.cnblogs.com/CSLaker/p/7400179.html

【动态规划】POJ-2229相关推荐

  1. 动态规划 POJ 1088 滑雪

    Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知 ...

  2. 动态规划——Poj 1159 Palindrome

    1)   题目 Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 46005 Accepted: 15688 ...

  3. DP:Sumsets(POJ 2229)

     数的集合问题 题目大意:给定你一个整数m,你只能用2的k次幂来组合这个数,问你有多少种组合方式? 这一题一看,天啦太简单了,完全背包?是不是? 不过的确这一题可以用完全背包来想,但是交题绝对是TLE ...

  4. DP 之 poj 2229

    // [3/24/2014 Sjm] /* 解法分析: 依次列出 N=1, 2, 3, 4, 5, 6, 7, 寻找规律: (1) 若 n 为奇数:dp[n] = dp[n - 1] (第一个数必是1 ...

  5. POJ 2229 Sumsets

    题目链接 题意 给定一个数字,问用2的次方数凑,一共有几种情况 例如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+ ...

  6. Sumsets POJ - 2229(计数dp)

    题意: 给一个数,是集合的总数和,集合元素只能为2的次幂数,问这样的集合有多少? 题目: Farmer John commanded his cows to search for different ...

  7. poj 2229 Sumsets(类似于n的m划分)

    传送门 •题意 将一个数N分解为2的幂之和共有几种分法? •题解 定义dp[ i ]为 i 的分解方案数. 初始化dp[0] = 20 = 1; 状态转移方程为: for i : 1 to N 若 i ...

  8. POJ 2229 Sumsets(递推,找规律)

    构造,递推,因为划分是合并的逆过程,考虑怎么合并. 先把N展开成全部为N个1 然后合并,因为和顺序无关,所以只和出现次数有关 情况有点多并且为了避免重复,分类,C[i]表示序列中最大的数为2^i时的方 ...

  9. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  10. 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

    挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...

最新文章

  1. MyBatis 源码解读-loadCustomVfs(settings)
  2. P3899-[湖南集训]谈笑风生【主席树】
  3. wps电脑版_WPS和MS Office的一个重要区别
  4. 今天升级Xcode 7.0 bata发现网络访问失败。
  5. 虎牙、斗鱼正式达成合并协议;​中国广电正式成立,或催生5G发展新格局;Linux 5.9 释出|极客头条
  6. 【转】ETL介绍与ETL工具比较
  7. java debugger
  8. 第四次作业——04树
  9. h5点击按钮之后按钮消失_小程序webview跳转页面后没有返回按钮完美解决方案
  10. windows phone越狱、安装xap相关问题
  11. 微信小程序----实现YDUI的ScrollTab(滚动选项卡)
  12. MetaMask10.6.1点击切换本地网络LocalHost:8545没反应
  13. python帝国cms_帝国CMS教程
  14. 国内手机验证码短信平台哪个好用?关键在于这4个标准!
  15. 消防工程师知识点:规范中关于高差10米的规定汇总(附带练习题)众智博睿
  16. Java黑皮书课后题第3章:*3.31(金融:货币兑换)编写程序,提示用户输入从美元到人民币的兑换汇率,然后提示用户输入0表美元兑人民币、1表人民币兑美元。继而提示用户输入美元数量或人民币数量,兑换
  17. 外卖骑手是如何被外卖企业逼向死亡之路的?
  18. fatal: unable to access ‘https://gitee.com/****/****.git/‘: The requested URL returned error
  19. python解释器环境中用于表示上一次运算结果的特殊变量_Python语句print(type(1//2))的输出结果是...
  20. Android仿微信图片编辑库,你想要的功能这里都有

热门文章

  1. iPhone使用CoreTelephony获得SIM卡网络运营商资讯和通话资料
  2. silverlight 如何在浏览器的新页面里打开一个xaml
  3. 【Top1】Tudou.com首页网页设计的制作方法
  4. 以后可能用到的一些OQL
  5. 关联分析(Association analysis)
  6. netstat 在windows下和Linux下查看网络连接和端口占用
  7. 海南首例供港造血干细胞志愿者启程赴广东捐献
  8. 吴恩达机器学习+林轩田机器学习+高等数学和线性代数等视频领取
  9. Redis 3.0.1 安装和配置
  10. sublime 3143 注册码