HDU3709
来源:互联网 发布:淘宝店铺关注怎么刷 编辑:程序博客网 时间:2024/05/21 08:56
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709
ull dfs(int len, int piovt, int sum, bool limit),目前处理到第len位,第piovt 为支点,目前的和为sum,是否受到限制。
枚举每一位作为支点,累加 dfs(len, i, 0, true)
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ull;ull dp[20][20][2005];int digit[20];ull dfs(int len, int piovt, int sum, bool limit){ if (len == 0){ return sum == 0; } if (sum < 0){ return 0; } if (!limit && dp[len][piovt][sum] != -1){ return dp[len][piovt][sum]; } int Max = limit ? digit[len] : 9; ull ret = 0; for (int i=0; i<=Max; i++){ ret += dfs(len-1, piovt, sum+(len-piovt)*i, limit&&(i==Max)); } if (!limit){ dp[len][piovt][sum] = ret; } return ret;}ull calc(ull n){ if (n < 0){ return 0; } int len = 0; while (n > 0){ digit[++len] = n % 10; n /= 10; } ull ret = 0; for (int i=1; i<=len; i++){ ret += dfs(len, i, 0, true); } return ret-(len-1);}int main(){ int t; ull n, m; scanf("%d", &t); memset(dp, -1, sizeof(dp)); while (t > 0){ t--; scanf("%I64d%I64d", &n,&m); printf("%I64d\n",calc(m)-calc(n-1)); } return 0;}
0 0
- hdu3709
- HDU3709
- HDU3709
- hdu3709 枚举
- hdu3709 Balanced Number
- hdu3709(数位dp)
- hdu3709 Balanced Number
- hdu3709 Balanced Number
- 【HDU3709】【Balanced Number】
- 数位DP hdu3709 枚举
- hdu3709 数位dp
- hdu3709: Balanced Number
- hdu3709 Balanced Number
- 【HDU3709】 Balanced Number
- HDU3709 Balanced Number
- hdu3709——数位dp
- HDU3709 Balanced Number 数位DP
- [HDU3709]Balanced Number && 数位DP
- 树状数组 or 归并树 —— HDU 4417
- C# 人脸识别
- 跟小刀学 数据结构 双向链表
- RabbitMQ,ActiveMq,ZeroMq比较
- reactnative Navigator api解释
- HDU3709
- PL2303在win10无法使用的解决办法
- 消息队列比较以及通信问题
- tomcat源码浅析--connector
- 使用jdbc连接数据库的简单案例
- ZOJ-3331-双塔dp
- C++静态数据成员和静态成员函数~
- DHCP的实现原理
- 312. Burst Balloons