HDU 3709 Balanced Number(数位dp)
来源:互联网 发布:死神vs火影月改优化版 编辑:程序博客网 时间:2024/05/19 17:10
枚举平衡点的位置
#include<cstdio>#include<cstring>typedef long long ll;int dig[20];ll d[20][20][2000];ll dp(int po,int bal,int sum,bool zero,bool limit) {if(po<0) return sum==0;if(!limit&&!zero&&d[po][bal][sum]!=-1) return d[po][bal][sum];int to=limit?dig[po]:9;ll ans=0;for(int i=0;i<=to;++i) {if(zero&&i==0&&bal>=po) continue; int nxtsum=sum+i*(po-bal);if(nxtsum>=0) ans=ans+dp(po-1,bal,nxtsum,zero&&i==0,limit&&i==to);}if(!limit&&!zero) d[po][bal][sum]=ans;return ans;}ll solve(ll x) {if(x==-1) return 0;int po=0;while(x) {dig[po++]=x%10;x/=10;}ll ans=0;for(int bal=0;bal<po;++bal) ans=ans+dp(po-1,bal,0,1,1);return ans+1;}int main() {memset(d,-1,sizeof(d));int T;scanf("%d",&T);while(T--) {ll l,r;scanf("%lld%lld",&l,&r);printf("%lld\n",solve(r)-solve(l-1));}return 0;}
0 0
- HDU 3709 Balanced Number(数位DP)
- hdu 3709 Balanced Number (数位dp)
- hdu 3709 Balanced Number(数位dp)
- HDU 3709 Balanced Number(数位DP)
- HDU 3709 Balanced Number (数位DP)
- HDU 3709 Balanced Number (数位dp)
- HDU-3709 Balanced Number (数位DP)
- HDU 3709 Balanced Number(数位dp)
- hdu 3709 Balanced Number (数位DP)
- HDU 3709 Balanced Number (数位DP)
- HDU 3709 Balanced Number(数位dp)
- HDU 3709 Balanced Number(数位DP)
- HDU 3709 Balanced Number(数位dp)
- HDU-3709 Balanced Number (数位dp)
- HDU 3709 Balanced Number(数位DP)
- 数位dp HDU 3709 Balanced Number
- Balanced Number - HDU 3709 数位dp
- [数位dp] hdu 3709 Balanced Number
- 上古神器sed命令(上)
- java开发之文件路径剖析
- 剑指offer——第一个只出现一次的字符
- HDU5547 Sudoku(深搜DFS)(2015CCPC)
- 【linux】ubuntu 安装、配置与启动tftp服务
- HDU 3709 Balanced Number(数位dp)
- 跟我一起学OpenGL-矩形之index buffer的使用
- 第一次出去比赛(河工大校赛4.22)
- 回文子序列 ssl2662 暴力
- SSL1585 取数游戏(递归)
- B
- Linux中环境变量文件及配置
- vim配置
- 【IMWeb训练营作业】Select 组件