2019.03.28 bzoj3598: [Scoi2014]方伯伯的商场之旅(带权中位数+数位dp)
传送门
题意咕咕咕自己读吧挺简单的
思路:
由带权中位数的性质可以得到对于每个数放在每个二进制位的代价一定是个单调或者单峰函数,因此我们先把所有的数都挪到第一个位置,然后依次向右枚举峰点(极值点)把能挪的挪走即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
int a[62],len=0;
ll f[62][1205],L,R;
int K;
inline ll dfs(int pos,int sum,bool lim){
if(pos>len)return sum;
if(!lim&&~f[pos][sum])return f[pos][sum];
ll ret=0;
for(ri i=0,up=lim?a[pos]:K-1;i<=up;++i)ret+=dfs(pos+1,sum+i*(pos-1),lim&&i==up);
if(!lim)f[pos][sum]=ret;
return ret;
}
inline ll calc(int pos,int sum,int mid,bool lim){
if(pos>len)return max(sum,0);
if(!lim&&~f[pos][sum])return f[pos][sum];
ll ret=0;
for(ri i=0,up=lim?a[pos]:K-1;i<=up;++i)ret+=calc(pos+1,sum+(pos<mid?-i:i),mid,lim&&i==up);
if(!lim)f[pos][sum]=ret;
return ret;
}
inline ll solve(ll x){
len=0;
while(x)a[++len]=x-x/K*K,x/=K;
reverse(a+1,a+len+1);
memset(f,-1,sizeof(f));
ll ret=dfs(1,0,1);
for(ri i=2;i<=len;++i)memset(f,-1,sizeof(f)),ret-=calc(1,0,i,1);
return ret;
}
int main(){
cin>>L>>R>>K;
cout<<solve(R)-solve(L-1);
return 0;
}
2019.03.28 bzoj3598: [Scoi2014]方伯伯的商场之旅(带权中位数+数位dp)的更多相关文章
- 2019.03.28 bzoj3594: [Scoi2014]方伯伯的玉米田(二维bit优化dp)
传送门 题意咕咕咕 思路:直接上二维bitbitbit优化dpdpdp即可. 代码: #include<bits/stdc++.h> #define N 10005 #define K 5 ...
- [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. ...
- 2019.03.28 bzoj3597: [Scoi2014]方伯伯运椰子(01分数规划)
传送门 题意咕咕咕有点麻烦不想写 思路: 考虑加了多少一定要压缩多少,这样可以改造边. 于是可以通过分数规划+spfaspfaspfa解决. 代码: #include<bits/stdc++.h ...
- 2019.03.28 bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)
传送门 题意简述: 给一个有优先级的nnn个人的序列,初始的时候第iii个人排名为iii,现在有mmm个操作,种类如下: 把编号为xxx的改成yyy,输出改前xxx的排名 把编号为xxx放到队首,输出 ...
- bzoj3598 [Scoi2014]方伯伯的商场之旅
数位dp,我们肯定枚举集合的位置,但是如果每次都重新dp的话会很麻烦,所以我们可以先钦定在最低位集合,dp出代价,然后再一步步找到正确的集合点,每次更改的代价也dp算就好了. #include < ...
- 洛谷P3286 [SCOI2014]方伯伯的商场之旅
题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一 ...
- 【bzoj3598】: [Scoi2014]方伯伯的商场之旅
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的 ...
- 【bzoj3598】 Scoi2014—方伯伯的商场之旅
http://www.lydsy.com/JudgeOnline/problem.php?id=3598 (题目链接) 题意 Solution 原来这就是极水的数位dp,呵呵= =,感觉白学了.htt ...
随机推荐
- FireDac 同时连接SQLserver2000时出现 Connection is busy with results for another command
First chance exception at $763FC632. Exception class EMSSQLNativeException with message '[FireDAC][P ...
- 大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)
拜读了大型分布式架构设计与实现,觉得该书作为入门不错,但内容过于简单,描述过于琐碎,小节之间连续性不强,不适合深入钻研学习.但为了更多的希望向架构师行业靠拢的工程师学习需要,本博客将对上书进行简化讲解 ...
- python flask 解决中文乱码
response = make_response(output_string)response.headers['Content-Type'] = 'text/plain;charset=UTF-8' ...
- 知识点---animate()动画滞后执行的解决方案
jQuery动画: animate 容易出现连续触发.滞后反复执行的现象: 针对 jQuery 中 slideUp.slideDown.animate 等动画运用时出现的滞后反复执行等问题的解决方法有 ...
- 【转】未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
“/xxxxx”应用程序中的服务器错误. ------------------------------------------------------------------------------- ...
- python 决策树
RID age income student credit_rating Class:buys_computer 1 youth high no fair no 2 youth high no exc ...
- python 写入数据
import sys reload(sys) sys.setdefaultencoding('utf8') import xlrd import xlwt book = xlrd.open_workb ...
- poj3250(单调栈模板题)
题目链接:https://vjudge.net/problem/POJ-3250 题意:求序列中每个点右边第一个>=自身的点的下标. 思路:简单介绍单调栈,主要用来求向左/右第一个小于/大于自身 ...
- 微信小程序分享朋友圈
原理:canvas生成图片再保存到手机 JS onShow: function () { var that = this; //1. 请求后端API生成小程序码 // that.getQr(); // ...
- 使用vue-cli@3启动elementui脚手架
[vue3.x] 准备看elementui的源码,早上拉elementui提供的脚手架代码,于是下载了vue3.x(之前一直用2.x) 1.先把vue2.x卸载了 npm uninstall -g v ...