bzoj1563: [NOI2009]诗人小G 决策单调性(1D1D)
目录
题目链接
题解
\(n^2\) 的dp长这样
\(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\)
设\(w_{ij} = (sum_i - sum_j - 1 - L)^P\)
那么化成1D1D的标准形式
$ f_i = min(f_j + w_{i,j}) $
发现w满足四边形不等式
证明可以看这里
https://www.byvoid.com/zhs/blog/noi-2009-poet
因此状态转移方程具有单调性
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define gc getchar()
#define pc putchar
#define LD long double
inline int read() {
int x = 0,f = 1;
char c = gc;
while(c < '0' || c > '9' )c = gc;
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = gc;
return x * f ;
}
void print(LL x) {
if(x >= 10) print(x / 10);
pc(x % 10 + '0');
}
const int maxn = 100007;
char s[maxn][32];
int n,L,p;
inline LD fstpow(LD x,int k) {
LD ret = 1;
for(;k;k >>= 1,x = x * x) if(k & 1) ret *= x;
return ret;
}
LD f[maxn];
int sum[maxn];
LD calc(int j,int i) {
return f[j] + fstpow(std::abs(sum[i] - sum[j] - L),p);
}
int find(int x,int y) {
int l = x,r = n,ret = 0;
while(l <= r) {
int mid = l + r >> 1;
if(calc(x,mid) >= calc(y,mid)) r = mid - 1;
else l = mid + 1;
}
return l;
}
int q[maxn],c[maxn];
int pre[maxn];
void solve() {
n = read(),L = read() + 1,p = read();
for(int i = 1;i <= n;++ i) {
scanf("%s",s[i] + 1);
sum[i] = sum[i - 1] + strlen(s[i] + 1) + 1;
}
int h = 1,t = 1;
q[h] = 0;
for(int i = 1;i <= n;++ i) {
while(h < t && c[h] <= i) ++ h;
f[i] = calc(q[h],i); pre[i] = q[h];
while(h < t && c[t - 1] >= find(q[t],i)) t --;
c[t] = find(q[t],i); q[++ t] = i;
}
if(f[n] > 1e18) {
puts("Too hard to arrange\n--------------------");
return;
}
printf("%.0Lf\n", f[n]);
puts("--------------------");
}
int main() {
int T = read();
for(int i = 1; i <= T; ++ i) {
solve();
}
return 0;
}
bzoj1563: [NOI2009]诗人小G 决策单调性(1D1D)的更多相关文章
- BZOJ1563: [NOI2009]诗人小G(决策单调性 前缀和 dp)
题意 题目链接 Sol 很显然的一个dp方程 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 其中\(sum_i = \sum_{j = 1}^i len ...
- [BZOJ1563][NOI2009]诗人小G(决策单调性优化DP)
模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #include<cstdio> #incl ...
- BZOJ1563:[NOI2009]诗人小G(决策单调性DP)
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...
- [NOI2009]诗人小G 决策单调性优化DP
第一次写这种二分来优化决策单调性的问题.... 调了好久,,,各种细节问题 显然有DP方程: $f[i]=min(f[j] + qpow(abs(sum[i] - sum[j] - L - 1))); ...
- P1912 [NOI2009]诗人小G[决策单调性优化]
地址 n个数划分若干段,给定$L$,$p$,每段代价为$|sum_i-sum_j-1-L|^p$,求总代价最小. 正常的dp决策单调性优化题目.不知道为什么luogu给了个黑题难度.$f[i]$表示最 ...
- BZOJ_1563_[NOI2009]诗人小G_决策单调性
BZOJ_1563_[NOI2009]诗人小G_决策单调性 Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超 ...
- [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)
[BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...
- BZOJ1563 NOI2009诗人小G(动态规划+决策单调性)
设f[i]为前i行的最小不协调度,转移枚举这一行从哪开始,显然有f[i]=min{f[j]+abs(s[i]-s[j]+i-j-1-m)p}.大胆猜想有决策单调性就好了.证明看起来很麻烦,从略.注意需 ...
- 2018.09.28 bzoj1563: [NOI2009]诗人小G(决策单调性优化dp)
传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的 ...
随机推荐
- WinEdt 和 Sumatra 双向关联设置
(1)配置PDF Viewer,在菜单栏选Options -> Execution Modes ->PDF Viewer ->点击右侧的"Browse"按钮,在弹 ...
- Arduino语法详解_含示例详解
Arduino 的程序可以划分为三个主要部分:结构.变量(变量与常量).函数. 结构部分 一.结构 1.1 setup() 1.2 loop() 二.结构控制 2.1 if 2.2 if...else ...
- .Net Core中使用RabbitMQ
(1).引入依赖 RabbitMQ.Client (2).编写发布者代码 var connectionFactory = new ConnectionFactory() { HostName=&quo ...
- Spring使用RMI进行远程方法调用
(1).我新建了三个项目,SpringRmiApi(存放提供者和消费者共有的xx,例如实体类以及服务接口等等).SpringRmiService(服务提供者).SpringRmiProvider(服务 ...
- Bootstrap2.x与Bootstrap3.x的区别
做项目时,有时也会参考别的案例的优秀之处.在用Bootstrap的时候,发现很多项目代码都有区别,在<div>布局class上,有用.span*,有用.col-md-*,实际上是Boots ...
- 重装系统,出现:Units specified don't exist SHSUCDX can't install
重装系统,出现:Units specified don't exist SHSUCDX can't install 解决方案1: 首先是你的硬盘分区不对吧 先用PQ格成ntfs或far32 进PE把C ...
- sqlserver中将查询结果拼接成字符串
#for xml path(param)--将查询结果以xml格式输出 select id,name from table1 for xml path --id和name为table1的真实字段 - ...
- python动态函数名的研究
所谓动态函数名,就是使用时完全不知道是叫什么名字,可以由用户输入那种. 一般人习惯性会想到eval或exec, 但是众所周知,这样的写法不安全而且容易引起问题,而且不pythonic.而且使用时必须把 ...
- nginx常见异常分析
1.nginx不转发消息头header问题 proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_ ...
- zabbix3.0.4通过自定义shell脚本添加对关键日志文件的监控
zabbix添加对自定义无规则日志文件的监控 项目背景及思路: zabbix自带有针对日志文件的监控,自带的监控只能监控到指定文件或者正则匹配的固定日志文件,但当需要监控的文件名没有规律的时候自带监控 ...