hdu 4734(数位dp)
来源:互联网 发布:淘宝十元包邮专区在哪 编辑:程序博客网 时间:2024/06/05 08:25
传送门
题解:找出i∈[0~b]且f(i)≤f(a)的数的个数。
设dp[i][j]表示当前从高往低在第i位,f(a)被减还剩下j的方案数。
看题花的时间比做题长。。。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int dp[11][19000],b[11];inline int f(int x) { int ret=0,i=-1; while (x) { ret+=(x%10)*(1<<(++i)),x/=10; } return ret;}int dfs(int pos,int st,bool lim) { if (!pos) return st>=0; if (st<0) return 0; if (!lim&&~dp[pos][st]) return dp[pos][st]; int end=lim?b[pos]:9,ans=0; for (int i=0;i<=end;++i) ans+=dfs(pos-1,st-i*(1<<(pos-1)),lim&&i==end); if (!lim) dp[pos][st]=ans; return ans;}inline int work(int x,int y) { int len=0; while (y) { b[++len]=y%10,y/=10; } return dfs(len,f(x),1);}int main() { memset(dp,-1,sizeof(dp)); int kase,CR7=0,a,b; scanf("%d",&kase); while (kase--) { scanf("%d%d",&a,&b); printf("Case #%d: %d\n",++CR7,work(a,b)); } return 0;}
阅读全文
0 0
- hdu 4734(数位dp)
- HDU 4734(数位dp)
- hdu 4734(数位dp)
- hdu 4734 数位dp
- HDU-4734 数位DP
- hdu 4734 数位DP
- hdu 4734 数位dp
- hdu 4734 数位dp
- hdu 4734 数位DP
- hdu 4734 数位dp
- HDU 4734 (数位DP)
- hdu-4734-数位Dp
- HDU 4734 数位DP
- HDU - 4734 数位dp
- HDU 4734(数位DP)
- HDU 4734 数位DP
- HDU 4734 数位DP
- hdu 4734 【数位DP】
- 学习Docker(2017-10-4)
- volatile的详细用法
- 二叉搜索树(Binary Search Tree)
- mybatis报错:java.lang.IllegalArgumentException: Mapped Statements collection does not contain
- 【Halcon教程6】halcon/c++接口基础 之异常处理
- hdu 4734(数位dp)
- java之字符串
- HDU 6183 Color it 线段树(动态分配节点)
- Codeforces Round #438 C. Qualification Rounds
- HDOJ2064汉诺塔III
- mysql安装未设置密码 使用root账户登录报错
- 这六个理由告诉你学Java到底有多好!
- 【Halcon教程7】 halcon/c++接口基础 之 HALCON图像变量类
- Java常见异常总结