HDU 4734 数位DP
来源:互联网 发布:程序员客栈 编辑:程序博客网 时间:2024/06/05 06:10
数位DP
题意:
定义:
思路:
考虑到A的范围,它的权重最大也不超过10000,所以可以定义:
那么按照简单数位DP就可以很容易写出来。
- 注意边界条件
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int A,B,bit[10];int dp[10][10005];int F(int x){ int ans = 0; int len = 0; while(x) { ans += (x%10)*(1<<len); len++; x /= 10; } return ans;}int dfs(int pos,int sum,int e){ if(pos == -1) return sum >= 0; if(sum < 0) return 0; if(!e && dp[pos][sum] != -1) return dp[pos][sum]; int End = e ? bit[pos] : 9; int ans = 0; for(int i = 0;i <= End; i++) { ans += dfs(pos-1,sum - i*(1<<pos),e && i == End); } if(!e) dp[pos][sum] = ans; return ans;}int solve(){ int pos = 0; while(B) { bit[pos++] = B%10; B /= 10; } return dfs(pos-1,F(A),1);}int main(){ //freopen("in.txt","r",stdin); int tt,ncase = 1; scanf("%d",&tt); memset(dp,-1,sizeof(dp)); while(tt--) { scanf("%d%d",&A,&B); printf("Case #%d: %d\n",ncase++,solve()); } 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 #2
- git学习笔记
- Python基础-*args和**kwargs魔法变量
- 类加载机制
- 3 HTTP协议
- Java-JFrame简易计算器
- HDU 4734 数位DP
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- SanJi Boot Security——一个基于Spring Boot 与 Vue的后台脚手架
- C++ STL begin()和front()、end()和back()的区别与用法
- 缓慢停止的运动
- MATLAB中的几类常见的随机函数的探讨
- 混杂设备驱动框架1
- jquery判断input checkbox 是否有checked属性
- 1012. The Best Rank (25)