题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709

题意:求区间[L,R]内每一个数中是否存在一位,使得左边的各位数*距离=右边的各位数*距离(自己和自己的距离算0)。

先枚举pivot的位置,然后做数位dp,记录当前数位、pv的位置和当前和。由于前导零的存在,最后结果要减掉诸如00,000,000...0这样的情况(个数和数位长度相同,当然单独一个0是合法的)。

最终结果ret-pos+1

 #include <bits/stdc++.h>
using namespace std; typedef long long LL;
const int maxn = ;
int digit[maxn];
LL l, r;
LL dp[maxn][maxn][maxn**]; LL dfs(int l, int pv, int s, bool flag) {
if(l == ) return !s;
if(s < ) return ;
if(~dp[l][pv][s] && !flag) return dp[l][pv][s];
int pos = flag ? digit[l] : ;
LL ret = ;
for(int i = ; i <= pos; i++) {
ret += dfs(l-, pv, s+i*(l-pv), flag&&(i==pos));
}
if(!flag) dp[l][pv][s] = ret;
return ret;
} LL f(LL x) {
int pos = ;
if(x == -) return ;
while(x) {
digit[++pos] = x % ;
x /= ;
}
LL ret = ;
for(int i = pos; i >= ; i--) {
ret += dfs(pos, i, , true);
}
return ret - pos + ;
} int main() {
// freopen("in", "r", stdin);
int T;
scanf("%d", &T);
memset(dp, -, sizeof(dp));
while(T--) {
scanf("%I64d %I64d", &l, &r);
printf("%I64d\n", f(r)-f(l-));
}
return ;
}

[HDOJ3709]Balanced Number(数位dp)的更多相关文章

  1. HDU 3709 Balanced Number (数位DP)

    Balanced Number Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

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

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

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

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

  4. HDU3709 Balanced Number —— 数位DP

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

  5. hdu3709 Balanced Number 数位DP

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

  6. Balanced Number 数位dp

    题意: 给出求ab之间有多少个平衡数   4139为平衡数   以3为轴   1*1+4*2==9*1 思路很好想但是一直wa  : 注意要减去前导零的情况 0 00 000 0000   不能反复计 ...

  7. 多校5 HDU5787 K-wolf Number 数位DP

    // 多校5 HDU5787 K-wolf Number 数位DP // dp[pos][a][b][c][d][f] 当前在pos,前四个数分别是a b c d // f 用作标记,当现在枚举的数小 ...

  8. Balanced Numbers (数位DP)

    Balanced Numbers https://vjudge.net/contest/287810#problem/K Balanced numbers have been used by math ...

  9. SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]

    题目链接:http://www.spoj.com/problems/BALNUM/en/ Time limit: 0.123s Source limit: 50000B Memory limit: 1 ...

随机推荐

  1. 各种类型的Writable(Text、ByteWritable、NullWritable、ObjectWritable、GenericWritable、ArrayWritable、MapWritable、SortedMapWritable)转

    java原生类型 除char类型以外,所有的原生类型都有对应的Writable类,并且通过get和set方法可以他们的值. IntWritable和LongWritable还有对应的变长VIntWri ...

  2. some software that is used to speed up your system

    1.RAMDISK take some space in ram and use them as the disk. Primo Ramdisk Server Edition 5.6.0 regist ...

  3. 鸟哥的linux私房菜学习记录之开机流程、模块管理与Loader

  4. Linux系统的中断、系统调用和调度概述【转】

    转自:http://blog.csdn.net/yanlinwang/article/details/8169725 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近学习Linux操作系统, ...

  5. web.xml中 error-page的正确用法

    <error-page> <error-code>404</error-code> <location>/mvc/hello1?i=1</loca ...

  6. asp.net导入Excel表

    一.导入Excel的界面这个界面很简单,代码就不列出来了.二.导入的代码我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里.这里需要注意的是 ...

  7. [ios][swift]swift 怎么去除 optional

    在转换String时要使用“!”进行拆包,用“?”则会有optional 出现

  8. 【转】去掉eclipse的validate

    转载地址:http://www.blogjava.net/leisure/archive/2013/01/11/394087.html 困扰了好几天,与大家共享 1,在project名称上右键选择pr ...

  9. c# 服务端

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...