poj2229【完全背包-规律Orz...】
来源:互联网 发布:防止网络诈骗手抄报 编辑:程序博客网 时间:2024/06/08 18:48
挑战DP
题意:
被组合数只能是2的整数幂,然后给出一个数问有多少种组合(mod1e10);
思路:
完全背包做啊…还是蛮简单的…(这里取膜要改成加法,省时间…)
dp[i]代表对于j的方案数
贴一发吧…
#include <iostream>#include <cstdio>#include <string.h>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <algorithm>using namespace std;#define LL long long#define INF 0x3f3f3f3fconst double pi = acos(-1.0);const int mod = 1e9;const int N =1e6+10;int dp[N];void Init(){ memset(dp,0,sizeof(dp)); dp[0]=dp[1]=1; for(int i=1;i<=22;i++) { for(int j=2;j<=1000000;j++) { int v=1<<(i-1); if(j>=v) dp[j]=dp[j-v]+dp[j]; while(dp[j]>mod) dp[j]-=mod; } }}int main(){ int n; Init(); while(~scanf("%d",&n)) printf("%d\n",dp[n]); return 0;}
然后看了discuss的那个blog(我还是很少点这种推送的blog,看完还是蛮搞笑的。。。)
具体也就不讲了…能这样玩也是厉害呀…)一个数乘2的情况和那个数的情况相同,谁说不是呢。弱太菜玩不出…
挫code…………
#include <iostream>#include <cstdio>#include <string.h>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <algorithm>using namespace std;#define LL long long#define INF 0x3f3f3f3fconst double pi = acos(-1.0);const LL mod = 1e9;const int N =1e6+10;LL dp[N];int main(){ dp[1]=1; for(int i=2;i<=1000000;i++) { if(i%2==1) dp[i]=dp[i-1]; else dp[i]=(dp[i-1]+dp[i/2])%mod; } int n; while(~scanf("%d",&n)) printf("%d\n",dp[n]); return 0;}
0 0
- poj2229【完全背包-规律Orz...】
- POJ2229-Sumsets-完全背包
- POJ2229-背包计数或者推倒规律
- TOJ3976 Change 完全背包 || 找规律
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- 背包九讲【ORZ式教学】
- Orz
- orz
- ORZ
- ...Orz
- Orz
- Orz
- orz
- 获取句子迷的经典语录[Python版本]
- 浅析MongoDB数据库的海量数据存储应用
- mysql 清空表数据,并且主键回到1
- Bootstrap canvas自适应
- 如何简单地实现引用类型的深度克隆
- poj2229【完全背包-规律Orz...】
- 用ajax异步上传附件
- iOS里很简单的推送,移动端。
- 字典树
- slf4j、log4j、logback关系介绍
- a^n - b^n 的计算方式
- 链表、队列和栈的区别
- iOS 循环创建按钮进行点击切换颜色问题
- WPF自定义路由事件