hdu 4734 F(x) 数位DP
来源:互联网 发布:天刀男号捏脸数据 编辑:程序博客网 时间:2024/06/03 19:50
题意:
给出计算公式,寻找0~b之间满足条件的数字个数
思路:
对于dp [i ] [ j ] 表示了i位数字 不大于j的数字个数和
#include <stdio.h>#include <cstring>#include <algorithm>#include <iostream>using namespace std;int dp[15][50000];int digit[20];int split(int num){ int ans=0; int k=1; while(num) { ans+=(num%10)*k; k<<=1; num/=10; } return ans;}int dfs(int len,int ans,int limit){ if(ans<0)return 0; if(len<0)return ans>=0; if(!limit&&dp[len][ans]!=-1) return dp[len][ans]; int sum=0; int last= limit? digit[len]:9; for(int i=0;i<=last;i++) { sum+=dfs(len-1,ans-i*(1<<len),limit&&last==i); } if(!limit) dp[len][ans]=sum; return sum;}int solve(int top,int b){ int cnt=0; while(b) { digit[cnt++]=b%10; b/=10; } return dfs(cnt-1,top,1);}int main(){ int t; memset(dp,-1,sizeof(dp)); scanf("%d",&t); for(int cs=1;cs<=t;cs++) { int a,b; scanf("%d%d",&a,&b); int tmp=split(a); printf("Case #%d: %d\n",cs,solve(tmp,b)); } return 0;}
阅读全文
0 0
- [HDU 4734]F(x)[数位DP]
- hdu 4734 F(x)(数位DP)
- 简单数位dp-hdu-4734-F(x)
- 【数位DP】 HDU 4734 F(x)
- hdu-4734-F(x)--数位dp
- hdu 4734 F(x) --- 数位dp
- hdu 4734 F(x) (数位dp)
- [数位dp] hdu 4734 F(x)
- hdu 4734 F(x)(数位dp)
- 【HDU】4734 F(x) 数位DP
- HDU 4734 F(x)(数位DP)
- HDU 4734 F(x) (数位DP)
- hdu 4734 F(x) 数位dp
- 【数位DP】 HDU 4734 F(x)
- HDU 4734 F(x)(数位DP)
- HDU 4734 F(X) 数位DP
- Hdu 4734 F(x) (数位dp)
- HDU 4734 F(x) (数位DP)
- Android控件系列之RadioButton&RadioGroup
- 常用激活函数介绍
- angular-网络请求天气
- 关于Interger和int
- recycleView 瀑布流
- hdu 4734 F(x) 数位DP
- 区间DP 表达式
- [笔记]filter,空字符,0,None都是False应用
- Dubbo之添加到开启自动启动-yellowcong
- BZOJ 2654: tree 最小生成树+二分
- 写struts2遇到的一个小问题
- SpringMVC处理模型数据
- Biorhythms
- 分享一下CSS样式重置代码