博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ - 1032 数位DP
阅读量:4944 次
发布时间:2019-06-11

本文共 1648 字,大约阅读时间需要 5 分钟。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define rep(i,j,k) for(register int i=j;i<=k;i++)#define rrep(i,j,k) for(register int i=j;i>=k;i--)#define erep(i,u) for(register int i=head[u];~i;i=nxt[i])#define iin(a) scanf("%d",&a)#define lin(a) scanf("%lld",&a)#define din(a) scanf("%lf",&a)#define s0(a) scanf("%s",a)#define s1(a) scanf("%s",a+1)#define print(a) printf("%lld",(ll)a)#define enter putchar('\n')#define blank putchar(' ')#define println(a) printf("%lld\n",(ll)a)#define IOS ios::sync_with_stdio(0)using namespace std;const int maxn = 66;const int MOD = 2520;const double eps = 1e-10;typedef long long ll;const int oo = 0x3f3f3f3f;ll read(){ ll x=0,f=1;register char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}ll a[maxn];ll dp[maxn][2][maxn];ll DP(int cur,int pre,ll p,int limit){ if(cur==0) return p; if(!limit&&dp[cur][pre][p]!=-1) return dp[cur][pre][p]; int up=limit?a[cur]:1; ll ans=0; rep(i,0,up){ if(pre==1&&i==1) ans+=DP(cur-1,i,p+1,limit&&a[cur]==i); else ans+=DP(cur-1,i,p,limit&&a[cur]==i); } return (limit)?ans:dp[cur][pre][p]=ans;}ll solve(ll num){ if(num==-1)return 0; if(num==0) return 0; int cur=0; while(num){ a[++cur]=num%2; num/=2; } return DP(cur,0,0,1);}int main(){ memset(dp,-1,sizeof dp); int T=read(),kase=0; while(T--){ ll r=read(); printf("Case %d: ",++kase); println(solve(r)); } return 0;}

转载于:https://www.cnblogs.com/caturra/p/8610315.html

你可能感兴趣的文章
排序规则
查看>>
percent的用法
查看>>
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
js中几种实用的跨域方法原理详解
查看>>
打印图形
查看>>
《第一行代码》学习笔记7-活动Activity(5)
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
一位有着工匠精神的博主写的关于IEnumerable接口的详细解析
查看>>
MySQL中特有的函数If函数
查看>>
安装Python3.6.2报错:zipimport.ZipImportError: can't decompress data; zlib not available
查看>>
【蓝桥杯】入门训练 Fibonacci数列
查看>>
实验十 指针2
查看>>
常见HTTP状态码
查看>>
vim 空格和换行的删除和替换
查看>>
ionic 入门学习
查看>>
[python]pickle和cPickle
查看>>
末日了,天是灰色的。
查看>>
Vuejs vm对象详解
查看>>