【HDU3709】 Balanced Number
来源:互联网 发布:做知敬畏守底线的教师 编辑:程序博客网 时间:2024/06/07 05:30
Problem
http://acm.hdu.edu.cn/showproblem.php?pid=3709
Solution
一开始想到的是f[len][pivot][j][k]记录到len,支点为pivot,左边j,右边k的值
看过题解后发现可以直接记录j-k为power_matrix,这样可以少一维,还可以在为负数时剪枝。
CODE
/* * @key word:digit * @tesed on:HDU3709 15ms * @Author: lhq * @Date: 2017-08-16 19:31:38 * @Last Modified by: lhq * @Last Modified time: 2017-08-16 19:33:09 */#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define ll long longll dp[20][20][1500];int a[20];ll dfs(int len,int pos,int sum,bool limit){ if (len==0) return sum==0?1:0; if (sum<0) return 0; if (!limit && dp[len][pos][sum]!=-1) return dp[len][pos][sum]; int up=limit?a[len]:9; ll ans=0; for (int i=0;i<=up;i++) ans+=dfs(len-1,pos,sum+i*(len-pos),limit && i==up); if (!limit) dp[len][pos][sum]=ans; return ans;}ll solve(ll x){ if (x<0) return 0; int len=0; while (x) { a[++len]=x%10; x/=10; } ll ans=0; for (int i=1;i<=len;i++) ans+=dfs(len,i,0,true); return ans-len+1;}int main(){ int T; cin>>T; memset(dp,-1,sizeof(dp)); while (T--) { ll x,y; cin>>x>>y; cout<<solve(y)-solve(x-1)<<endl; } return 0;}
阅读全文
0 0
- hdu3709 Balanced Number
- hdu3709 Balanced Number
- hdu3709 Balanced Number
- 【HDU3709】【Balanced Number】
- hdu3709: Balanced Number
- hdu3709 Balanced Number
- 【HDU3709】 Balanced Number
- HDU3709 Balanced Number
- HDU3709 Balanced Number 数位DP
- [HDU3709]Balanced Number && 数位DP
- hdu3709 Balanced Number 数位dp
- hdu3709---Balanced Number(数位dp)
- hdu3709 Balanced Number 数位dp
- 数位dp hdu3709 Balanced Number
- HDU3709 Balanced Number 数位DP
- hdu3709 Balanced Number 数位dp
- hdu3709——Balanced Number
- HDU3709 Balanced Number[数位DP]
- 3-9配置mariadb
- 美国IT行业软件开发经理收入最高?程序员是不是最后非得转管理?
- JavaScript继承
- VS中动态库的配置
- Unity入门操作_Transform组件_003
- 【HDU3709】 Balanced Number
- Cheapest Palindrome
- vue.js+webpack 实现模块化
- HDU6121 Build a tree(树+异或)
- window7+下部署jekyll,期待吧
- 简单选择排序(Selection Sort)
- 数据结构实验之二叉树五:层序遍历
- MyBatis知识点
- GetWindowsProductKey