hdu3709
枚举+数位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的更多相关文章
- [HDU3709]Balanced Number
[HDU3709]Balanced Number 试题描述 A balanced number is a non-negative integer that can be balanced if a ...
- 【hdu3709】 Balanced Number
http://acm.hdu.edu.cn/showproblem.php?pid=3709 (题目链接) 题意 求范围${[a,b]}$之间的平衡数的个数,所谓平衡数就是以某一位为支点,两侧的力矩相 ...
- HDU3709 Balanced Number —— 数位DP
题目链接:https://vjudge.net/problem/HDU-3709 Balanced Number Time Limit: 10000/5000 MS (Java/Others) ...
- hdu3709 Balanced Number (数位dp+bfs)
Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...
- HDU3709 Balanced Number (数位dp)
Balanced Number Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descript ...
- HDU3709:Balanced Number(数位DP+记忆化DFS)
Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is p ...
- hdu3709(数位dp)
求区间[l,r]内有多少个数的满足: 选一个位为中点,是的左边的数到该位的距离等于右边的位到该位的距离. 比如4139 选择3位中点, 那么左边的距离是 4 * 2 + 1 * 1 , 右边的距 ...
- hdu3709 Balanced Number 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题目大意就是求给定区间内的平衡数的个数 要明白一点:对于一个给定的数,假设其位数为n,那么可以有 ...
- hdu3709 数位dp
枚举fix所在的位置loc即可,然后数位dp即可 这题要注意一种特殊情况,就是所有位都是0的时候对于每个fix都是成立的 /* dp[i][j][k]表示前i位确定了平衡点在第j位,前i位和为k fi ...
随机推荐
- python 占位符 %s Format
1.百分号方式 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择 ...
- 关于centos7的网络配置
1.DNS DNS是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能 ...
- tar命令的详细解释
tar命令的详细解释 标签: linuxfileoutputbashinputshell 2010-05-04 12:11 235881人阅读 评论(12) 收藏 举报 分类: linux/unix ...
- 修改PUTTY支持保存密码
1.从官网下载 Putty 0.60 Release 的 Windows 版源码 http://www.chiark.greenend.org.uk/~sgtatham/putty/download. ...
- godaddy空间的sql server数据库没办法insert中文
原来的代码: use string007 from sysobjects where id = object_id('K_V_TEST') and type = 'U') drop table K_V ...
- 【Solr】数据库数据导入索引库
目录 分析框图 配置数据库与solrconfig.xml 回到顶部 分析框图 框图画的粗糙!勿喷啊!勿喷啊! 回到顶部 配置数据库与solrconfig.xml Dataimport插件 可以批量把数 ...
- 认识ATL窗口
这是一个相当于“Hello world!”的任务,作为认识ATL,考查了其运作流程与机制. 环境:VS2008 创建:新建-项目-Win32项目-添加公用头文件用于(选择ATL). PS:注意新建项目 ...
- javacomm64位用不了,可以使用RXTXcomm for x64
安装完后把导入包名改一下就行了! 附上读串口代码: /* * @(#)SimpleRead.java 1.12 98/06/25 SMI * * Copyright (c) 1998 Sun Micr ...
- ThinkPHP3.2.3 安装教程
本文以 Windows 平台为例 安装前准备:Windows操作系统的电脑,php编程环境(配置好了Apache.MySql.php).推荐wampserver. 待安 ...
- 【bzoj2243】[SDOI2011]染色
题目描述 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如"11 ...