[HDU - 3709] Balanced Number


题目链接


大致题意:

给定区间[a,b],求区间内平衡数的个数

平衡数:即有一位做平衡点,左右两边数字的力矩相等


解题思路:

判断力矩是否相等,需要参数sum记录力矩情况,初始为0,递归到最低位还是0,说明左右两边力矩相等

对于平衡点,需要进行枚举统计

所以枚举的平衡点,每一次dfs结果会加上固定平衡点满足条件的数字个数

除此之外,数字0也是满足的,但是00,000,0000不满足,所以最终答案res-len+1


AC代码:

#include <bits/stdc++.h>using namespace std;
typedef long long ll;const int N = 20;
int a[N];
ll f[N][N * 100];ll dfs(int pos, int limit, int x, int sum) {if (sum < 0)return 0; //剪枝if (!pos)return !sum;if (!limit && f[pos][sum] != -1)return f[pos][sum];ll res = 0;int end = limit ? a[pos] : 9;for (int i = 0; i <= end; ++i)res += dfs(pos - 1, limit && i == end, x, sum + i * (pos - x));if (!limit)f[pos][sum] = res;return res;
}ll dp(ll n) {int len = 0;while (n) {a[++len] = n % 10;n /= 10;}ll res = 0;for (int i = 1; i <= len; ++i) {memset(f, -1, sizeof f);res += dfs(len, 1, i, 0);}return res - len + 1;
}
int main(void)
{int t; scanf("%d", &t);while (t--) {ll l, r;scanf("%lld%lld", &l, &r);printf("%lld\n", dp(r) - dp(l - 1));}return 0;
}

[HDU - 3709] Balanced Number (数位dp)相关推荐

  1. HDU 3709 Balanced Number (数位DP)

    题意 求出[x, y] 范围内的平衡数,平衡数定义为:以数中某个位为轴心,两边的数的偏移量为矩,数位权重,使得整个数平衡. 思路 外层枚举平衡点,然后数位DP即可.设计状态: dp[pos][o][l ...

  2. HDU - 3709 Balanced Number(数位dp)

    题目链接:点击查看 题目大意:将一串数字视为天平,两端平衡的数字称为平衡数,并求出一段闭区间中平衡数的个数.所谓的平衡条件即为力臂与 力相乘后两端的数量和可以抵消,例如数字4139可以视为以3为中轴的 ...

  3. HDU 3709 Balanced Number(数位DP)题解

    思路: 之前想直接开左右两边的数结果爆内存... 枚举每次pivot的位置,然后数位DP,如果sum<0返回0,因为已经小于零说明已经到了pivot右边,继续dfs只会越来越小,且dp数组会炸 ...

  4. HDU 3709 Balanced Number

    Balanced Number 题意: 平衡数:存在该数中以一个数字为支点(pivot),点的"力矩"为该点到支点的距离乘以该点的值,而平衡指的是支点两侧的力矩和相等 思路: 易知 ...

  5. HDU - 3709 (Balanced Number)

    题意:设一个数的十进制表达是 a1a2a3...an ,则它是 Balanced Number 的定义是:存在一个位置 i <=n,使得:  问区间[l,r] 内有多少个数是 Balanced ...

  6. HDU 5787 wolf Number 数位dp

    题意 题目就是说让我们在l到r的数字中求得有多少个连续k为不相同的数 1≤L≤R≤1e18 2≤K≤5 Time Limit: 6000/3000 MS (Java/Others) Memory Li ...

  7. HDU odd-even number 数位dp

    题意 在l到r区间内求有多少个符合条件"当前数中所有连续的奇数长度是偶数 所有连续的偶数长度是奇数"的个数 分析 典型的数位dp问题 我们设置dp数组时可以根据 dp[pos][p ...

  8. HDOJ 3709 Balanced Number

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

  9. HDU 3555 Bomb(数位DP模板啊两种形式)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...

  10. HDU 6156 Palindrome Function 数位DP

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6156 题目描述: 求L~R所有的数的l~r进制的f(x), f(x) = 当前进制 如果回文串, f ...

最新文章

  1. bootstrap19-内联表单
  2. CSS效果:固定页脚、PNG透明、最小高度 3枚
  3. 201521123071 《JAVA程序设计》第七周学习总结
  4. php 循环获取分类,PHP 循环删除无限分类子节点
  5. ajax离开页面方法,jQuery中ajax调用当前页面方法
  6. oracle数据库执行sql很慢
  7. 比中年危机更可怕的,是“下半生危机”
  8. j2me模拟器自动退出的原因
  9. 建议收藏!4款良心的时间轴软件
  10. 亲测免费下载知网论文方法
  11. 几大图片加载框架比较
  12. 这几款手机安全浏览器,好用不止一点点
  13. 互联网和大数据是什么意思_互联网包括大数据吗 大数据与互联网的关系是什么...
  14. (二)Spring中的ioc
  15. 爬虫获取微博首页热搜
  16. C语言题目:打印华氏温度与摄氏温度对照表(for循环思路一)(有能力的同学老师们赞一下呀)
  17. linux怎么下载安装软件
  18. nlp gpt论文_gpt 3变形金刚和nlp的狂野世界
  19. 笔记本电脑无法连上WiFi的解决办法
  20. Hibernate简单配置

热门文章

  1. 计算机cpu位数是啥,怎么看电脑cpu的位数
  2. 初学,这个报错怎么解决
  3. QC4+充电协议_一文看懂各家充电协议!总算彻底理清了
  4. python两个下划线怎么打_Python中单下划线与双下划线用法总结
  5. spa文件转换html,spa.html
  6. PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】
  7. Chrome恐龙小游戏“开挂“跑分
  8. 如何玩Chrome的小恐龙游戏
  9. T检验和p-value含义及计算公式
  10. Office 365网络链接概览(三)--专线express route