【动态规划】POJ-2229
一、题目
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相关推荐
- 动态规划 POJ 1088 滑雪
Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知 ...
- 动态规划——Poj 1159 Palindrome
1) 题目 Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 46005 Accepted: 15688 ...
- DP:Sumsets(POJ 2229)
数的集合问题 题目大意:给定你一个整数m,你只能用2的k次幂来组合这个数,问你有多少种组合方式? 这一题一看,天啦太简单了,完全背包?是不是? 不过的确这一题可以用完全背包来想,但是交题绝对是TLE ...
- DP 之 poj 2229
// [3/24/2014 Sjm] /* 解法分析: 依次列出 N=1, 2, 3, 4, 5, 6, 7, 寻找规律: (1) 若 n 为奇数:dp[n] = dp[n - 1] (第一个数必是1 ...
- 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+ ...
- Sumsets POJ - 2229(计数dp)
题意: 给一个数,是集合的总数和,集合元素只能为2的次幂数,问这样的集合有多少? 题目: Farmer John commanded his cows to search for different ...
- poj 2229 Sumsets(类似于n的m划分)
传送门 •题意 将一个数N分解为2的幂之和共有几种分法? •题解 定义dp[ i ]为 i 的分解方案数. 初始化dp[0] = 20 = 1; 状态转移方程为: for i : 1 to N 若 i ...
- POJ 2229 Sumsets(递推,找规律)
构造,递推,因为划分是合并的逆过程,考虑怎么合并. 先把N展开成全部为N个1 然后合并,因为和顺序无关,所以只和出现次数有关 情况有点多并且为了避免重复,分类,C[i]表示序列中最大的数为2^i时的方 ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)
挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...
最新文章
- MyBatis 源码解读-loadCustomVfs(settings)
- P3899-[湖南集训]谈笑风生【主席树】
- wps电脑版_WPS和MS Office的一个重要区别
- 今天升级Xcode 7.0 bata发现网络访问失败。
- 虎牙、斗鱼正式达成合并协议;​中国广电正式成立,或催生5G发展新格局;Linux 5.9 释出|极客头条
- 【转】ETL介绍与ETL工具比较
- java debugger
- 第四次作业——04树
- h5点击按钮之后按钮消失_小程序webview跳转页面后没有返回按钮完美解决方案
- windows phone越狱、安装xap相关问题
- 微信小程序----实现YDUI的ScrollTab(滚动选项卡)
- MetaMask10.6.1点击切换本地网络LocalHost:8545没反应
- python帝国cms_帝国CMS教程
- 国内手机验证码短信平台哪个好用?关键在于这4个标准!
- 消防工程师知识点:规范中关于高差10米的规定汇总(附带练习题)众智博睿
- Java黑皮书课后题第3章:*3.31(金融:货币兑换)编写程序,提示用户输入从美元到人民币的兑换汇率,然后提示用户输入0表美元兑人民币、1表人民币兑美元。继而提示用户输入美元数量或人民币数量,兑换
- 外卖骑手是如何被外卖企业逼向死亡之路的?
- fatal: unable to access ‘https://gitee.com/****/****.git/‘: The requested URL returned error
- python解释器环境中用于表示上一次运算结果的特殊变量_Python语句print(type(1//2))的输出结果是...
- Android仿微信图片编辑库,你想要的功能这里都有