【bzoj3598】: [Scoi2014]方伯伯的商场之旅
Description
Input
Output
输出仅有 1 行,包含 1 个整数,表示最少的代价。
Sample Input
Sample Output
HINT
1 < = L < = R < = 10^15, 2 < = K < = 20
题解:
据说是数位DP水题,EXM?
一开始想了个5维DP……想了想不太对,怂了题解……
先强制性让集合点为最低位,然后得到一个答案,但显然这个不是最优解,那么考虑当某个数集合点从低位转移到高一位的要求,即此位以前数字之和要大于后面数之和,若用$a_{i}(P)$表示P进制下第i位的数字,这个条件就是:$\sum_{x=i+1}^n a_{x}(P)>=\sum_{x=1}^{i-1}a_{x}(P)$。在考虑如何DP。
首先对于强制性选择最低位,可以直接数位DP,这部分很裸;接着,考虑从次低位到最高位为集合点的减少量,记忆化搜索的时候我们传一个选取位置,当当前位数大于等于此值时我们加上此位枚举值,反之减去,若减去到某位后和小于了0,那么说明这个状态不满足进位集合,直接返回0即可。最后我们用第一次DP出的答案减去之后枚举新集合点的减少量即为答案。
(话说第一次打记忆化搜索,感觉怪怪的。)
代码(抄来的233):
#define Troy 10/11/2017
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[][**],P;
int num,p[];
inline ll dfs(int pos,int sum,bool limit){
if(pos==) return sum;
if(!limit&&f[pos][sum]!=-) return f[pos][sum];
int end=limit?p[pos]:P-;
ll ret=;
for(int i=;i<=end;i++)
ret+=dfs(pos-,sum+(pos-)*i,limit&&i==end);
if(!limit) f[pos][sum]=ret;
return ret;
}
inline ll dfs(int pos,int up,int sum,bool limit){
if(sum<) return ;
if(pos==) return sum;
if(!limit&&f[pos][sum]!=-) return f[pos][sum];
int end=limit?p[pos]:P-;
ll ret=;
for(int i=;i<=end;i++)
if(pos>=up) ret+=dfs(pos-,up,sum+i,limit&&i==end);
else ret+=dfs(pos-,up,sum-i,limit&&i==end);
return limit==?f[pos][sum]=ret:ret;
}
inline ll calc(ll n){
num=;
do{
p[++num]=n%P;
n/=P;
}while(n);
memset(f,-,sizeof(f));
ll ret=dfs(num,,true);
for(int i=;i<=num;i++)
memset(f,-,sizeof(f)),ret-=dfs(num,i,,true);
return ret;
}
int main(){
ll a,b;
scanf("%lld%lld%lld",&a,&b,&P);
printf("%lld\n",calc(b)-calc(a-));
}
【bzoj3598】: [Scoi2014]方伯伯的商场之旅的更多相关文章
- [BZOJ3598][SCOI2014]方伯伯的商场之旅(数位DP,记忆化搜索)
3598: [Scoi2014]方伯伯的商场之旅 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 449 Solved: 254[Submit][Sta ...
- BZOJ3598 SCOI2014方伯伯的商场之旅(数位dp)
看到数据范围就可以猜到数位dp了.显然对于一个数最后移到的位置应该是其中位数.于是考虑枚举移到的位置,那么设其左边和为l,左右边和为r,该位置数为p,则需要满足l+p>=r且r+p>=l. ...
- bzoj3598 [Scoi2014]方伯伯的商场之旅
数位dp,我们肯定枚举集合的位置,但是如果每次都重新dp的话会很麻烦,所以我们可以先钦定在最低位集合,dp出代价,然后再一步步找到正确的集合点,每次更改的代价也dp算就好了. #include < ...
- 2019.03.28 bzoj3598: [Scoi2014]方伯伯的商场之旅(带权中位数+数位dp)
传送门 题意咕咕咕自己读吧挺简单的 思路: 由带权中位数的性质可以得到对于每个数放在每个二进制位的代价一定是个单调或者单峰函数,因此我们先把所有的数都挪到第一个位置,然后依次向右枚举峰点(极值点)把能 ...
- 洛谷P3286 [SCOI2014]方伯伯的商场之旅
题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一 ...
- [SCOI2014]方伯伯的商场之旅
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的 ...
- 【数位DP】SCOI2014 方伯伯的商场之旅
题目内容 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子. 说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 ...
- 【bzoj3598】 Scoi2014—方伯伯的商场之旅
http://www.lydsy.com/JudgeOnline/problem.php?id=3598 (题目链接) 题意 Solution 原来这就是极水的数位dp,呵呵= =,感觉白学了.htt ...
- BZOJ.3598.[SCOI2014]方伯伯的商场之旅(贪心 数位DP)
题目链接 先考虑,对于确定的一个数,怎样移动代价最少(或者移到哪个位置最优)? 假设我们都移到下标\(1\)位置(设集合点为\(1\)),那么移动到下标\(2\)与\(1\)相比代价差为:\(下标&l ...
随机推荐
- jQuery学习小结
1.jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").clic ...
- miniUI input设置默认值,js获取年月注意事项,数据库nvl函数使用
2017-6-5周一,今天碰到的一个需求是:两税附征模块进入页面筛选时间默认值为当前月的上一个月,并根据筛选结果显示数据,我们用的框架为miniUI. 坑1: 默认值设置,刚刚接触miniUI,对里面 ...
- 每天几分钟跟小猫学前端之node系列:用node实现最简单的爬虫
先来段求分小视频: https://www.iesdouyin.com/share/video/6550631947750608142/?region=CN&mid=6550632036246 ...
- java程序的内存分配(一)
首 页 阅览室 馆友 我的图书馆 帐号 java程序的内存分配(一) 收藏 JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据J ...
- MTCNN人脸检测 附完整C++代码
人脸检测 识别一直是图像算法领域一个主流话题. 前年 SeetaFace 开源了人脸识别引擎,一度成为热门话题. 虽然后来SeetaFace 又放出来 2.0版本,但是,我说但是... 没有训练代码, ...
- 在Windows上安装Git
实话实说,Windows是最烂的开发平台,如果不是开发Windows游戏或者在IE里调试页面,一般不推荐用Windows.不过,既然已经上了微软的贼船,也是有办法安装Git的. Windows下要使用 ...
- 转载一篇makefile,说的很详细
March 3, 2015 8:19 PM 原文见:https://www.cnblogs.com/OpenShiFt/p/4313351.html Makefile 文件的编写 学习前的准备 需要准 ...
- Magic Quadrant for Security Information and Event Management
https://www.gartner.com/doc/reprints?id=1-4LC8PAW&ct=171130&st=sb Summary Security and risk ...
- Vimium快捷键记录
作为一个Geek必备的技能 从今天起在这里仅记录下使用过的快捷键和心得(翻译自 ?) version: 1.59 版本不同,快捷键有所不同 1. 下载安装地址(自备梯子) Chrome商店:https ...
- Java开源生鲜电商平台-支付模块的设计与架构(源码可下载)
Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) 开源生鲜电商平台支付目前支持支付宝与微信.针对的是APP端(android or IOS) 1. 数据库表设计. 说明:无论是支付宝还 ...