[HDU - 3709] Balanced Number (数位dp)
[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)相关推荐
- HDU 3709 Balanced Number (数位DP)
题意 求出[x, y] 范围内的平衡数,平衡数定义为:以数中某个位为轴心,两边的数的偏移量为矩,数位权重,使得整个数平衡. 思路 外层枚举平衡点,然后数位DP即可.设计状态: dp[pos][o][l ...
- HDU - 3709 Balanced Number(数位dp)
题目链接:点击查看 题目大意:将一串数字视为天平,两端平衡的数字称为平衡数,并求出一段闭区间中平衡数的个数.所谓的平衡条件即为力臂与 力相乘后两端的数量和可以抵消,例如数字4139可以视为以3为中轴的 ...
- HDU 3709 Balanced Number(数位DP)题解
思路: 之前想直接开左右两边的数结果爆内存... 枚举每次pivot的位置,然后数位DP,如果sum<0返回0,因为已经小于零说明已经到了pivot右边,继续dfs只会越来越小,且dp数组会炸 ...
- HDU 3709 Balanced Number
Balanced Number 题意: 平衡数:存在该数中以一个数字为支点(pivot),点的"力矩"为该点到支点的距离乘以该点的值,而平衡指的是支点两侧的力矩和相等 思路: 易知 ...
- HDU - 3709 (Balanced Number)
题意:设一个数的十进制表达是 a1a2a3...an ,则它是 Balanced Number 的定义是:存在一个位置 i <=n,使得: 问区间[l,r] 内有多少个数是 Balanced ...
- HDU 5787 wolf Number 数位dp
题意 题目就是说让我们在l到r的数字中求得有多少个连续k为不相同的数 1≤L≤R≤1e18 2≤K≤5 Time Limit: 6000/3000 MS (Java/Others) Memory Li ...
- HDU odd-even number 数位dp
题意 在l到r区间内求有多少个符合条件"当前数中所有连续的奇数长度是偶数 所有连续的偶数长度是奇数"的个数 分析 典型的数位dp问题 我们设置dp数组时可以根据 dp[pos][p ...
- HDOJ 3709 Balanced Number
数位DP... Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java ...
- HDU 3555 Bomb(数位DP模板啊两种形式)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...
- HDU 6156 Palindrome Function 数位DP
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6156 题目描述: 求L~R所有的数的l~r进制的f(x), f(x) = 当前进制 如果回文串, f ...
最新文章
- bootstrap19-内联表单
- CSS效果:固定页脚、PNG透明、最小高度 3枚
- 201521123071 《JAVA程序设计》第七周学习总结
- php 循环获取分类,PHP 循环删除无限分类子节点
- ajax离开页面方法,jQuery中ajax调用当前页面方法
- oracle数据库执行sql很慢
- 比中年危机更可怕的,是“下半生危机”
- j2me模拟器自动退出的原因
- 建议收藏!4款良心的时间轴软件
- 亲测免费下载知网论文方法
- 几大图片加载框架比较
- 这几款手机安全浏览器,好用不止一点点
- 互联网和大数据是什么意思_互联网包括大数据吗 大数据与互联网的关系是什么...
- (二)Spring中的ioc
- 爬虫获取微博首页热搜
- C语言题目:打印华氏温度与摄氏温度对照表(for循环思路一)(有能力的同学老师们赞一下呀)
- linux怎么下载安装软件
- nlp gpt论文_gpt 3变形金刚和nlp的狂野世界
- 笔记本电脑无法连上WiFi的解决办法
- Hibernate简单配置
热门文章
- 计算机cpu位数是啥,怎么看电脑cpu的位数
- 初学,这个报错怎么解决
- QC4+充电协议_一文看懂各家充电协议!总算彻底理清了
- python两个下划线怎么打_Python中单下划线与双下划线用法总结
- spa文件转换html,spa.html
- PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】
- Chrome恐龙小游戏“开挂“跑分
- 如何玩Chrome的小恐龙游戏
- T检验和p-value含义及计算公式
- Office 365网络链接概览(三)--专线express route