HDU 3709 Balanced Number(数位DP)题解

思路:

 

之前想直接开左右两边的数结果爆内存...

枚举每次pivot的位置,然后数位DP,如果sum<0返回0,因为已经小于零说明已经到了pivot右边,继续dfs只会越来越小,且dp数组会炸

注意一下一些细节:dp开long long,注意前导零只能算一次

代码:

#include<iostream>
#include<algorithm>
#define ll long long
const int N = 50000+5;
const int INF = 0x3f3f3f3f;
using namespace std;
int dig[20];
ll dp[20][20][2000];
ll dfs(int pos,int piv,int sum,bool limit){if(pos == -1) return sum == 0? 1 : 0;if(sum < 0) return 0;if(!limit && dp[pos][piv][sum] != -1) return dp[pos][piv][sum];int top = limit? dig[pos] : 9;ll ret = 0;for(int i = 0;i <= top;i++){int tot;if(pos > piv){tot = sum + (pos - piv)*i;}else if(pos < piv){tot = sum - (piv - pos)*i;}else{tot = sum;}ret += dfs(pos - 1,piv,tot,limit && i == top);}if(!limit) dp[pos][piv][sum] = ret;return ret;
}
ll solve(ll x){int pos = 0;if(x == -1) return 0;while(x){dig[pos++] = x % 10;x /= 10;}ll ret = 0;for(int i = 0;i < pos;i++){ret += dfs(pos - 1,i,0,true);}return ret - pos + 1; //前导零只能算一次
}
int main(){int T;ll l,r;scanf("%d",&T);while(T--){memset(dp,-1,sizeof(dp));scanf("%lld%lld",&l,&r);printf("%lld\n",solve(r) - solve(l - 1));}return 0;
}


转载于:https://www.cnblogs.com/KirinSB/p/9408772.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

regini.exe使用方法

创建一个名称test 类型reg_dword 数据1 如果是只有那会默认以类型reg_sz创建 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ys test reg_dword 1 2。注册表键数值 [更改的权限] 例如: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run…

不断的感悟、不断的学习、不断的成长

学习思想、勤于实践 学习目的、看靶放箭 学习总结、不断提升 --------------------------------------------------------------------------------------------------------------                        爱学习、勤学习 爱看书、勤看书       …

汇编指令大全

[数据传送指令] 一、通用数据传送指令 1、传送指令 MOV (move) 指令的汇编格式&#xff1a;MOV DST,SRC 指令的基本功能&#xff1a;(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。 指令支持的寻址方式&#xff1a;目的操作数和源操作数不能同时用存储器寻址方式&…

深度优先搜索----poj 1321棋盘问题

题目描述 棋盘问题 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 63237 Accepted: 30234Description 在一个给定形状的棋盘&#xff08;形状可能是不规则的&#xff09;上面摆放棋子&#xff0c;棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或…

计算机寄存器及标志位详解

以下是计算机内部寄存器阵列图&#xff1a; 以下FR控制标志位及其含义&#xff1a; 1. CF 进位标识位 进行加减运算时, 如果最高二进制位产生进位或错位, CF则为1, 否则为0. 程序设计中, 常用条件转移指令JC, JNC指令据此标志位实现转移 2. PF 奇偶标志位 操作结果…

NOIP 2010 引水入城

P1514 引水入城 题目描述 在一个遥远的国度&#xff0c;一侧是风景秀美的湖泊&#xff0c;另一侧则是漫无边际的沙漠。该国的行政区划十分特殊&#xff0c;刚好构成一个 NN 行 \times MM 列的矩形&#xff0c;如上图所示&#xff0c;其中每个格子都代表一座城市&#xff0c;每座…

关于IE8的SCODEF和 CREDAT

这里提供一些信息供理解IE8中的松散耦合处理方式。 由于IE8的LCIE更新&#xff0c; 现在比较难知道当前的tab是哪个iexplore.exe在处理。 如果你在用vista以上的系统&#xff0c; 任务管理器里有两列可以提供信息&#xff0c;分别是 commandline 和 pid&#xff0c; 如果这两列…

Cacls命令使用格式

Cacls命令使用格式如下&#xff1a; Cacls filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]] Filename——显示访问控制列表&#xff08;以下简称ACL&#xff09;&#xff1b; /T——更改当前目录及其所有子目录中指定文件的 ACL…

前段mui框架初识

由于需要了解了一下mui框架&#xff0c;感觉没有想象的那么好 mui引入过后就要生成他自己的滚动条 而且 不能获取页面的高度 非屏幕的高度 mui上拉加载是会有卡顿现象的 &#xff0c; 这段代码执行完之后会有比较严重的手机段拖动卡顿现象 解决办法 给他设置滚动系数&#…

attrib指令

attrib 指令用于修改文件的属性.文件的常见属性有:只读.存档.隐藏和系统. 只读属性是指文件只可以做读的操作.不能对文件进行写的操作.就是文件的 写保护 . 存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.…

mysql创建表时反引号的作用

试用navicat工具查看现网mysql建表语句时&#xff0c;发现表名和字段名都是反引号引起来的 CREATE TABLE tab_notice_title_tv (i_id int(11) NOT NULL AUTO_INCREMENT,c_opcom_key varchar(32) DEFAULT NULL,c_view_type int(11) DEFAULT 1 COMMENT 平台类型,1:标清,2:高清,c_…

关于 Unity 版本升级后可能会引起偶发光照图错乱的问题

近期项目遇到一个奇怪的问题&#xff0c;使用 Unity 2017 版本升级后&#xff0c;团队中某些人的机器光照图总是不正确&#xff0c;而有的人是正确的&#xff0c;一直不知道为什么。 为了查到这个奇怪问题的原因&#xff0c;首先查看了美术的在 Max 中的导出设置&#xff0c;虽…

解决LSP问题导致无法上网

判断LSP是否损坏&#xff0c;以及修复方式的微软网址&#xff1a; http://support.microsoft.com/?scidkb%3Bzh-cn%3B811259 Winsock LSP全称Windows Socket Layered Service Provider(分层服务提供商)&#xff0c;它是Windows底层网络Socker通信需要经过的大门。一些流氓软件…

关于(int argc char **argv)

演示使用opencv显示一幅图片&#xff1a; #include <iostream> #include <core/core.hpp> #include <highgui/highgui.hpp> using namespace std; using namespace cv; void main(int argc,char **argv) {Mat imageimread(argv[1]);imshow("Lena",…

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

函数MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);实际上是对注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations键进行修改&#xff0c;让操作系统在下一次启动后&#xff0c;AutoChk运行后&#xff0c…

【微信支付坑】

&#xff08;1&#xff09;每次去生成预支付时的订单号必须是不一样的--生成了没有支付 再次去支付要注意 &#xff08;2&#xff09;退款使用支付时支付异步返回&#xff08;微信订单号&#xff1a;transaction_id&#xff09; 转载于:https://www.cnblogs.com/fyandy/p/93324…

sc.exe 详解

sc.exe是一个命令行下管理本机或远程主机服务的工具,他的功能是非常强大的, 下面我们来讲讲他的一些常用的基本用法: 你可以在命令行下键入sc.exe/?获得帮助. 我们以在本机为例. 1.SC的基本格式: sc <server> [command] [service name] <option1> <optio…

Pytorch中的Batch Normalization操作

之前一直和小伙伴探讨batch normalization层的实现机理&#xff0c;作用在这里不谈&#xff0c;知乎上有一篇paper在讲这个&#xff0c;链接 这里只探究其具体运算过程&#xff0c;我们假设在网络中间经过某些卷积操作之后的输出的feature map的尺寸为4322 4为batch的大小&…

regsvr32.exe

regsvr32.exe用于注册Windows操作系统的动态链接库和ActiveX控件。 regsvr32.exe 文件建议修改权限&#xff0c;删除所有的用户只保存Administrators 和SYSTEM为所有权限 regsvr32.exe是32位系统下使用的DLL注册和反注册工具&#xff0c;使用它必须通过命令行的方式使用&#x…

洛谷P3369 普通平衡树

刚学平衡树&#xff0c;分别用了Splay和fhq-treap交了一遍。 这是Splay的板子&#xff0c;貌似比较短&#xff1f;Splay #include <iostream> #include <cstdio> #include <cstring> #include <algorithm>using namespace std;const int N 100005, IN…