枚举+数位dp

注意处理数字为0和1的情况。

#include <cstdio>
#include <cstring>
using namespace std; #define D(x) const int MAX_DIGIT = ; long long n;
int f[MAX_DIGIT];
long long memoize[MAX_DIGIT][**];
int pivot; int to_digits(long long a)
{
int ret = ;
while (a > )
{
f[++ret] = a % ;
a /= ;
}
return ret;
} long long dfs(int digit, bool less, int weight)
{
if (digit <= )
{
return weight == ;
}
if (less && memoize[digit][weight] != -)
{
return memoize[digit][weight];
}
int limit = less ? : f[digit];
long long ret = ;
for (int i = ; i <= limit; i++)
{
int new_weight = weight + (digit - pivot) * i;
if (new_weight < )
{
continue;
}
ret += dfs(digit - , less || i < f[digit], new_weight);
}
memoize[digit][weight] = ret;
return ret;
} long long work(long long n)
{
if (n < )
{
return ;
}
int len = to_digits(n);
long long ret = ;
for (int i = ; i <= len; i++)
{
pivot = i;
memset(memoize, -, sizeof(memoize));
ret += dfs(len, false, );
}
return ret - len + ;
} int main()
{
int t;
scanf("%d", &t);
while (t--)
{
long long a, b;
scanf("%lld%lld", &a, &b);
printf("%lld\n", work(b) - work(a - ));
}
return ;
}

hdu3709的更多相关文章

  1. [HDU3709]Balanced Number

    [HDU3709]Balanced Number 试题描述 A balanced number is a non-negative integer that can be balanced if a ...

  2. 【hdu3709】 Balanced Number

    http://acm.hdu.edu.cn/showproblem.php?pid=3709 (题目链接) 题意 求范围${[a,b]}$之间的平衡数的个数,所谓平衡数就是以某一位为支点,两侧的力矩相 ...

  3. HDU3709 Balanced Number —— 数位DP

    题目链接:https://vjudge.net/problem/HDU-3709 Balanced Number Time Limit: 10000/5000 MS (Java/Others)     ...

  4. hdu3709 Balanced Number (数位dp+bfs)

    Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...

  5. HDU3709 Balanced Number (数位dp)

     Balanced Number Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Descript ...

  6. HDU3709:Balanced Number(数位DP+记忆化DFS)

    Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is p ...

  7. hdu3709(数位dp)

    求区间[l,r]内有多少个数的满足:   选一个位为中点,是的左边的数到该位的距离等于右边的位到该位的距离. 比如4139  选择3位中点, 那么左边的距离是 4 * 2 + 1 * 1 , 右边的距 ...

  8. hdu3709 Balanced Number 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题目大意就是求给定区间内的平衡数的个数 要明白一点:对于一个给定的数,假设其位数为n,那么可以有 ...

  9. hdu3709 数位dp

    枚举fix所在的位置loc即可,然后数位dp即可 这题要注意一种特殊情况,就是所有位都是0的时候对于每个fix都是成立的 /* dp[i][j][k]表示前i位确定了平衡点在第j位,前i位和为k fi ...

随机推荐

  1. margin小结

    一. margin百分比 1. 普通元素的百分比margin都是相对于容器的宽度计算 2. 绝对定位元素的百分比margin是相对于第一个定位祖先元素(relative/absolute/fixed) ...

  2. 新浪微博客户端(63)-使用block进行链式编程

    Person.h #import <Foundation/Foundation.h> @interface Person : NSObject - (Person *(^)())study ...

  3. 如何在本地配置php分析工具xhprof

    测试环境: linuxMint + nginx1.4.6+mysql5.5+php5.5 什么是xhprof? XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时 ...

  4. Python 爬虫笔记、多线程、xml解析、基础笔记(不定时更新)

    1  Python学习网址:http://www.runoob.com/python/python-multithreading.html

  5. Java学习注意事项

    一个Java文件中可以包含多个类. 如果有public类,则文件名必须和public类一样. 例如: class Pie { void f(){ System.out.println("Pi ...

  6. Memcached存储命令 - replace

    Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值). 如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED. replace 命令的基 ...

  7. [译]git log

    git log git log命令用来显示提交的快照. 能列出来你项目的历史, 能过滤和搜索你指定的一些修改. git status能让你检查工作目录和stage区的状态, git log只提供被co ...

  8. 【AngularJS】—— 1 初识AngularJs

    怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习.这次正好学习AngularJS,直接复习一下前端的知识. ...

  9. OC第九节——协议与代理

    一.理解协议与代理 协议: 协议就是需要相互遵守的约定.规范:需要去实现协议中规定的方法. 代理: 代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表).它更像是一种关系,我要 ...

  10. MyEclipse 自动提示设置

    window --> Perferences--> General--> keys Content Assist默认的是Ctrl +space Content Assist快捷键设置 ...