题目链接:https://vjudge.net/problem/HDU-3709

题意:求出[l,r]中的平衡数,平衡数即存在一个中心点使得两边的力矩和相等。

思路:首先需要知道一个数最多只有一个中心点,可以通过反证法轻松得出,所以我们可以对长为pos的数枚举其中心点。用dp[pos][m][sum]表示长为pos+1、中心点在第m位、现在的力矩和为sum的数的个数。中心点一边的力矩和最大大约为1500,所以离散化一下,用1500表示0。另外要注意的是每次枚举中心点都会将0算入,所以最后要减取多加的pos-1个0。

AC代码:

#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;const int key=1500;
int T;
LL a[20],dp[20][20][2*key];LL dfs(int pos,int m,int sum,bool limit){if(pos==-1) return sum==key;if(!limit&&dp[pos][m][sum]!=-1) return dp[pos][m][sum];int up=limit?a[pos]:9;LL tmp=0;for(int i=0;i<=up;++i)tmp+=dfs(pos-1,m,sum+i*(pos-m),limit&&i==a[pos]);if(!limit) dp[pos][m][sum]=tmp;return tmp;
}LL solve(LL x){int pos=0;LL ans=0;while(x){a[pos++]=x%10;x/=10;}for(int i=0;i<pos;++i)ans+=dfs(pos-1,i,key,true);return ans-pos+1;
}int main(){memset(dp,-1,sizeof(dp));scanf("%d",&T);while(T--){LL l,r;scanf("%lld%lld",&l,&r);printf("%lld\n",solve(r)-solve(l-1));}return 0;
}

转载于:https://www.cnblogs.com/FrankChen831X/p/10765159.html

hdoj3709(数位dp)相关推荐

  1. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  2. 不要62 ---数位DP

    题意:求m到n中不含62和4的数的个数. 题目链接 思路:数位dp模板求满足的数字或不满足的数字,刚学,就求不满足的数. #include<stdio.h> #include<str ...

  3. bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/ ...

  4. cojs 简单的数位DP 题解报告

    首先这道题真的是个数位DP 我们考虑所有的限制: 首先第六个限制和第二个限制是重复的,保留第二个限制即可 第五个限制在转移中可以判断,不用放在状态里 对于第一个限制,我们可以增加一维表示余数即可 对于 ...

  5. 数位DP 不断学习中。。。。

    1, HDU 2089  不要62 :http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:不能出现4,或者相邻的62, dp[i][0],表示不存在不吉 ...

  6. [数位dp] spoj 10738 Ra-One Numbers

    题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...

  7. 数位dp(求1-n中数字1出现的个数)

    题意:求1-n的n个数字中1出现的个数. 解法:数位dp,dp[pre][now][equa] 记录着第pre位为now,equa表示前边是否有降数字(即后边可不能够任意取,true为没降,true为 ...

  8. 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)

    题目链接 题目大意 : 解题思路: 这里有个很核心的地方就是log2(i+j)\text{log2(i+j)}log2(i+j)本质上就是看看i+j\text{i+j}i+j的二进制高位在哪里? 那么 ...

  9. 数位dp ---- 暴力 + 二进制的数位dp 2020济南 L Bit Sequence

    题目链接 题目大意 f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数 给你一个数组[a1,a2,a3...,am]m∈[1,100][a_1,a_2,a_3. ...

  10. acwing1086||HDU4507数位dp[恨7不成妻]

    题目链接 题目大意:给你区间∈[l,r]\in[l,r]∈[l,r],问不满足 1.本身含有7;1.本身含有7;1.本身含有7; 2.每个数位和是7的倍数2.每个数位和是7的倍数2.每个数位和是7的倍 ...

最新文章

  1. 数据结构|-常见数据结构整理
  2. [BUUCTF-pwn]——cmcc_pwnme1
  3. 高内聚低耦合_高渗透环氧树脂灌浆料
  4. 质量效能研发部php,【百度】百度质量效能研发部【社招/实习】
  5. 递归神经网络变形之 (Long Short Term Memory,LSTM)
  6. 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!
  7. ws2_32.dll的妙用与删除 (禁网)
  8. 1.php查询数据,数据查询 · thinkphp5 · 看云
  9. java点歌系统代码_ktv 一个用java写的ktv点歌系统,用ACCESS数据库 Develop 238万源代码下载- www.pudn.com...
  10. linux查看磁盘io最多的进程,Linux 查看磁盘IO并找出占用IO读写很高的进程,磁盘占用很高...
  11. MyCat之全局表和ER表
  12. Android签名概要总结——对称加密/非对称加密、数字签名、公钥证书、ca认证机构、安卓app签名
  13. NRF24L01 2.4G无线模块浅析(学习笔记)
  14. 笔记本摄像头计算机,笔记本摄像头怎么开
  15. Java——Shape类
  16. PTA团队练习题C语言
  17. 如何把PDF中一些页面拆分成每一页单独的文件
  18. 这些年我踩过的`Mybatis`代码生成的坑
  19. 啥叫企业管理?王健林告诉你
  20. c语言lnk1120,C致命错误LNK1120:1未解决的外部

热门文章

  1. python显示表格_python显示表格
  2. CAML语法- Query写法
  3. Linux平台下软件推荐及主题图标推荐
  4. 【经验分享】用PS如何将图片的四角做成圆弧角
  5. CMS漏洞(发货100CMS、SHECMS、ZHCMS、MACCMS)详解实战
  6. 四川省泸州市蓝田科三流程细节
  7. 大麦DW33D路由器假死
  8. pyecharts动态图表嵌入ppt
  9. tomcat配置ssl证书
  10. 一部手机必须能用 7 年?苹果、三星、Google:三年支持差不多!