bzoj 3598: [Scoi2014]方伯伯的商场之旅【数位dp】
参考了这个http://www.cnblogs.com/Artanis/p/3751644.html,好像比一般方法好写
大概思想就是先计算出把所有石子都合并到1位置的代价,这样显然有一些是不优的,然后再分别计算把合并到1的石子合并到p,能优化多少
这个计算就是枚举2到tot位,对于每一位计算挪到这位能被优化的数最多能被优化多少,因为合并点右移的代价是sum[w]-(sum[n]-sum[w]),所以只要这个为负数就退出即可
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1005;
long long l,r,k,f[N][2],sm[N][2],g[N][N],a[N],tot;
long long dp(int w,int lm)
{
if(w==0)
{
sm[w][lm]=1;
return 0;
}
if(f[w][lm])
return f[w][lm];
long long r=0,s=0;
for(int i=0;i<=(lm?a[w]:k-1);i++)
{
r+=dp(w-1,lm&&(i==a[w]))+i*(w-1)*sm[w-1][lm&&(i==a[w])];
s+=sm[w-1][lm&&(i==a[w])];
}
sm[w][lm]=s;
return f[w][lm]=r;
}
long long wk(long long x)
{
memset(f,0,sizeof(f));
tot=0;
while(x)
a[++tot]=x%k,x/=k;
return dp(tot,1);
}
long long dfs(int w,int lm,int p,int s)
{
if(w==0)
return s;
if(!lm&&g[w][s])
return g[w][s];
long long r=0;
for(int i=0;i<=(lm?a[w]:k-1);i++)
{
long long nw=(w>=p?1:-1)*i+s;
if(nw<0)
break;
r+=dfs(w-1,lm&&i==a[w],p,nw);
}
if(lm)
return r;
return g[w][s]=r;
}
long long clc(long long x)
{
tot=0;
while(x)
a[++tot]=x%k,x/=k;
long long r=0;
for(int i=2;i<=tot;i++)
{
memset(g,0,sizeof(g));
r+=dfs(tot,1,i,0);
}
return r;
}
int main()
{
scanf("%lld%lld%lld",&l,&r,&k);
printf("%lld\n",wk(r)-wk(l-1)-(clc(r)-clc(l-1)));
return 0;
}
bzoj 3598: [Scoi2014]方伯伯的商场之旅【数位dp】的更多相关文章
- bzoj 3598 [Scoi2014]方伯伯的商场之旅——数位dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 TJ:https://www.cnblogs.com/Zinn/p/9351218.h ...
- [BZOJ3598][SCOI2014]方伯伯的商场之旅(数位DP,记忆化搜索)
3598: [Scoi2014]方伯伯的商场之旅 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 449 Solved: 254[Submit][Sta ...
- BZOJ.3598.[SCOI2014]方伯伯的商场之旅(贪心 数位DP)
题目链接 先考虑,对于确定的一个数,怎样移动代价最少(或者移到哪个位置最优)? 假设我们都移到下标\(1\)位置(设集合点为\(1\)),那么移动到下标\(2\)与\(1\)相比代价差为:\(下标&l ...
- bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/ ...
- 洛谷P3286 [SCOI2014]方伯伯的商场之旅
题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一 ...
- 【bzoj3598】: [Scoi2014]方伯伯的商场之旅
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的 ...
- [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 ...
随机推荐
- 移动web页面字体大小二
按设计稿中的字体大小设置页面字体大小(px),在手机端,因为不同设备会有不同,换算成rem单位.rem是“font size of the root element”,可以通过这篇文章了解http:/ ...
- java、android拼音,中文姓名排序
http://blog.sina.com.cn/s/blog_81a9aa7e0100tizj.html 在java或者是android编程的时候,我们经常要用到对姓名或者其他字符串排序,现在我写写自 ...
- 使用fastjson将list、map转换成json,出现$ref
这是转换时出现的问题情况( map >> json ) 引用是通过"$ref"来表示的 引用 描述 "$ref":".." 上一 ...
- HTML5 <template>标签元素简介
一.HTML5 template元素初面 <template>元素,基本上可以确定是2013年才出现的.干嘛用的呢,顾名思意,就是用来声明是“模板元素”. 目前,我们在HTML中嵌入模板H ...
- 一天教你入门struts2
写在前面 自己也是一个java和java web的菜鸟.之前没有接触过java web方面的开发 想通过一个小项目,来熟悉struts2的开发流程 一个有趣的想法源于教研室项目上的一个功能实现–自己主 ...
- libsvm源码凝视+算法描写叙述:svm_train
(I will try my best to make this note clearer. We mainly focus on solve_c_svc in this note) We mainl ...
- POJ 1679 The Unique MST 推断最小生成树是否唯一
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22715 Accepted: 8055 D ...
- poj1904 二分图匹配+强连通分量
http://poj.org/problem?id=1904 Description Once upon a time there lived a king and he had N sons. An ...
- 【Mongodb教程 第十课 】MongoDB 备份
MongoDB 数据转储 创建备份MongoDB中的数据库,应该使用mongodump命令.此命令将服务器的所有数据转储到转储目录.有许多可供选择,通过它可以限制的数据量或创建备份您的远程服务器. 语 ...
- LoadRunner压测时,出现的问题汇总
[问题]Error -10776 Failed to find .cfg file 错误分析:在loadrunner打开脚本的情况下,运行磁盘清理工具,导致运行打开的脚本时,提示Mdrv error ...