poj3252 数位dp
来源:互联网 发布:开淘宝店描述怎么写 编辑:程序博客网 时间:2024/06/05 16:12
将原本10进制的数位,改成2进制的数位转移就好了
#include <cstdio>#include <cstring>#include <iostream>using namespace std;typedef long long ll;ll dp[35][35][35];int bit[12];ll dfs(int pos,int cn0,int cn1,int lim,int z){ if(pos==-1) { if(z==1) return 0; if(cn0>=cn1) return 1; return 0; } if(!lim&&dp[pos][cn0][cn1]!=-1) return dp[pos][cn0][cn1]; ll ans=0; int en=lim?bit[pos]:1; for(int i=0;i<=en;i++) { if(z&&i==0) ans+=dfs(pos-1,0,0,0,1); else { if(i==0) ans+=dfs(pos-1,cn0+1,cn1,lim&&i==en,0); if(i==1) ans+=dfs(pos-1,cn0,cn1+1,lim&&i==en,0); } } if(!lim&&dp[pos][cn0][cn1]==-1) dp[pos][cn0][cn1]=ans; return ans;}ll solve(ll x){ int len=0; while(x) { bit[len++]=x%2; x/=2; } return dfs(len-1,0,0,1,1);}int main(){ memset(dp,-1,sizeof(dp)); ll st,en; while(~scanf("%lld%lld",&st,&en)) printf("%lld\n",solve(en)-solve(st-1));}
0 0
- 【数位DP】poj3252
- POJ3252数位DP
- poj3252 数位dp
- poj3252 数位dp
- poj3252(数位dp)
- POJ3252 Round Numbers 数位DP
- poj3252(记忆优化,数位dp)
- POJ3252---Round Numbers(数位dp)
- poj3252 Round Numbers (数位dp)
- 【POJ3252】Round Numbers(数位DP)
- POJ3252:Round Numbers(数位DP)
- POJ3252 数位DP Round Numbers
- POJ3252 Round Numbers 组合数学||数位DP
- poj3252 - Round Numbers(数位dp)
- poj3252 Round Numbers (数位dp)
- poj3252 Round Numbers(数位dp)
- POJ3252:Round Numbers(数位dp)
- poj3252——Round Numbers(数位DP)
- 虚拟机linux中装mysql数据库
- Find The Multiple
- 电路设计_路由器方案比较
- HDU 5882 Balanced Game(水题)
- js Array
- poj3252 数位dp
- Opencv Surf算子特征提取与最优匹配
- Codeforces 715B & 716D Complete The Graph 【最短路】 (Codeforces Round #372 (Div. 2))
- 浅析为什么char类型的范围是 —128~+127
- 迭代器模式
- HDU 5887 Herbs Gathering(01背包搜索)
- GearVRf使用说明
- POJ 1021 Fence 单调队列优化dp
- 内部线程