目录

题目链接

bzoj1563: [NOI2009]诗人小G

题解

\(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)的更多相关文章

  1. 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 ...

  2. [BZOJ1563][NOI2009]诗人小G(决策单调性优化DP)

    模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #include<cstdio> #incl ...

  3. BZOJ1563:[NOI2009]诗人小G(决策单调性DP)

    Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...

  4. [NOI2009]诗人小G 决策单调性优化DP

    第一次写这种二分来优化决策单调性的问题.... 调了好久,,,各种细节问题 显然有DP方程: $f[i]=min(f[j] + qpow(abs(sum[i] - sum[j] - L - 1))); ...

  5. P1912 [NOI2009]诗人小G[决策单调性优化]

    地址 n个数划分若干段,给定$L$,$p$,每段代价为$|sum_i-sum_j-1-L|^p$,求总代价最小. 正常的dp决策单调性优化题目.不知道为什么luogu给了个黑题难度.$f[i]$表示最 ...

  6. BZOJ_1563_[NOI2009]诗人小G_决策单调性

    BZOJ_1563_[NOI2009]诗人小G_决策单调性 Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超 ...

  7. [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)

    [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...

  8. BZOJ1563 NOI2009诗人小G(动态规划+决策单调性)

    设f[i]为前i行的最小不协调度,转移枚举这一行从哪开始,显然有f[i]=min{f[j]+abs(s[i]-s[j]+i-j-1-m)p}.大胆猜想有决策单调性就好了.证明看起来很麻烦,从略.注意需 ...

  9. 2018.09.28 bzoj1563: [NOI2009]诗人小G(决策单调性优化dp)

    传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的 ...

随机推荐

  1. LaTeX 对齐问题

    一.一行文本对齐 \leftline{左对齐} \centerline{居中} \rightline{右对齐} 二.多行文本或段落对齐 左对齐 \begin{flushleft}...\end{flu ...

  2. python模块分析之typing(三)

    前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言,这种 ...

  3. springboot系列十、springboot整合redis、多redis数据源配置

    一.简介 Redis 的数据库的整合在 java 里面提供的官方工具包:jedis,所以即便你现在使用的是 SpringBoot,那么也继续使用此开发包. 二.redidTemplate操作 在 Sp ...

  4. Python3学习笔记16-错误和异常

    使用try...except可以处理异常 异常处理 import sys try: print('try...') r = 10/0 print('result:',r) except ZeroDiv ...

  5. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  6. python环境下使用tab自动补全命令

    # vim /usr/lib/python2.7/dist-packages/tab.py 加入如下内容: #!/usr/bin/env python # python startup file im ...

  7. Python-CSS入门

    一.架构分析 页面 => div的层级结构 => 具有采用哪些功能标签显示内容 结构层 > 位置层(布局层) > 内容层 二.css引入 - 行间式 <!-- 简单直接, ...

  8. Windows 2012 安装 Oracle 11g 报错:[INS-13001]环境不满足最低要求。

    问题: 在Windows Server 2012 安装上 Oracle 11g 时,安装程序报错:[INS-13001]环境不满足最低要求. 分析原因: Oracle 在发布 11g时,Winodws ...

  9. SqlServer 2017 下载地址及密钥

    下载地址: ed2k://|file|cn_sql_server_2017_developer_x64_dvd_11296175.iso|1769777152|E21AE7C3576C0BDF1BC0 ...

  10. [转]清理ambari安装的hadoop集群

    本文针对redhat或者centos 对于测试集群,如果通过ambari安装Hadoop集群后,想重新再来一次的话,需要清理集群. 对于安装了很多hadoop组件的话,这个工作很繁琐.接下来是我整理的 ...