DP_1d1d诗人小G
显然:f[i]=min{f[j]+(s[i]-s[j]+i-j-1-l)^p}
此题可以基于决策单调优化
实际上就是双向队列
不停弹出队头的元素,直到当前位置在队头元素最优的范围内。
然后,每次把当前决策插入队尾,并弹出没它优的答案。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <map>
#include <set>
using namespace std; typedef long double ll;
const int MAXN=1e5+;
struct node{int l,r,p;}q[MAXN];
ll sum[MAXN],f[MAXN];
int T,n,l,p;
char s[]; ll pow(ll x){
int y=p;ll ret=;
while(y){
if(y&)ret=ret*x;
x*=x,y>>=;
}
return ret;
} ll calc(int x,int y){
return f[x]+pow(abs(sum[y]-sum[x]+(y-x-)-l));
} int find(node x,int i){
int l=x.l,r=x.r;
while(l<=r){
int mid=(l+r)>>;
if(calc(i,mid)<=calc(x.p,mid))r=mid-;
else l=mid+;
}
return l;
} void DP_1d1d(){
int head=,tail=;
q[++tail]=(node){,n,};
for(int i=;i<=n;i++){
if(head<=tail && q[head].r<i)head++;
f[i]=calc(q[head].p,i);
if(calc(i,n)<=calc(q[tail].p,n)){
while(head<=tail && calc(q[tail].p,q[tail].l)>=calc(i,q[tail].l) )tail--;
if(head>tail)q[++tail]=(node){i,n,i};
else{
int x=find(q[tail],i);
q[tail].r=x-;
q[++tail]=(node){x,n,i};
}
}
}
} int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&l,&p);
for(int i=;i<=n;i++)scanf("%s",s),sum[i]=sum[i-]+strlen(s);
DP_1d1d();
if(f[n]>1e18)puts("Too hard to arrange");
else printf("%lld\n",(long long)f[n]);
puts("--------------------");
}
return ;
}
DP_1d1d
DP_1d1d诗人小G的更多相关文章
- C++之路进阶——codevs2933(诗人小G)
2933 诗人小G 2009年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 小G是一个出色的诗人 ...
- LG1912 [NOI2009]诗人小G
题意 题目描述 小G是一个出色的诗人,经常作诗自娱自乐.但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以 ...
- bzoj1563: [NOI2009]诗人小G 决策单调性(1D1D)
目录 题目链接 题解 代码 题目链接 bzoj1563: [NOI2009]诗人小G 题解 \(n^2\) 的dp长这样 \(f_i = min(f_j + (sum_i - sum_j - 1 - ...
- 1563: [NOI2009]诗人小G
1563: [NOI2009]诗人小G https://lydsy.com/JudgeOnline/problem.php?id=1563 分析: 直接转移f[i]=f[j]+cost(i,j),co ...
- 【Luogu1912】【NOI2009】诗人小G(动态规划)
[Luogu1912][NOI2009]诗人小G(动态规划) 题面 洛谷 题解 原来\(NOI\)这么多神仙题... 考虑一个极其明显的\(dp\) 设\(f[i]\)表示前\(i\)个句子产生的最小 ...
- BZOJ1563/洛谷P1912 诗人小G 【四边形不等式优化dp】
题目链接 洛谷P1912[原题,需输出方案] BZOJ1563[无SPJ,只需输出结果] 题解 四边形不等式 什么是四边形不等式? 一个定义域在整数上的函数\(val(i,j)\),满足对\(\for ...
- [NOI2009]诗人小G --- DP + 决策单调性
[NOI2009]诗人小G 题目描述: 小G是一个出色的诗人,经常作诗自娱自乐. 但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并 ...
- NOI 2009A 诗人小G
NOI 2009A 诗人小G 诗人小G [问题描述] 小G是一个出色的诗人,经常作诗自娱自乐.但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们 ...
- P1912 [NOI2009]诗人小G
P1912 [NOI2009]诗人小G 思路: 平行四边形不等式优化dp 因为f(j, i) = abs(sum[i]-sum[j]+i-j-1-l)^p 满足平行四边形不等式 j < i f( ...
随机推荐
- 为什么在linux系统下安装anaconda的时候会报错
报错界面 一开始是在官网下载的最新的包,出现了上述的报错,但是换成清华镜像之后,就没有上述报错了? 我猜测可能是因为 官网最新的版本的anaconda和你安装的python版本不兼容,而在镜像上的不是 ...
- Linux的常用命令---这是对Linux最基本的尊重
Linux: 诞生日期:1991年 开发者:林纳斯·托瓦茨 特点:免费,开源 发行版本:centos|red Hat|Ubuntu|红旗等 思想:一切都是文件 重要文件目录 bin:二进制文件(命令) ...
- Pi和e的积分
Evaluate integral $$\int_{0}^{1}{x^{-x}(1-x)^{x-1}\sin{\pi x}dx}$$ Well,I think we have $$\int_{0}^{ ...
- Spring-session+Redis解决Session共享
1. 保证Redis启动 2. 导入依赖 SpringBoot+Spring-Session+Redis <!--spring boot 与re ...
- VSCode的Vue插件Vetur设置
使用VSCode编写vue项目时安装了Vetur插件,但是每次alt+shift+f格式化代码的时候就有点让人头疼, 缩进自动变成了2个空格(习惯了用4个空格缩进,不同层级的代码看着明显一点),js代 ...
- 表结构修改以及sql增删改查
修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 ...
- Docker的安装和操作(虚拟机+linux系统)
1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这 ...
- 【HTML】三种方法使HTML单页面输入密码才能访问
方法一 <script type="text/javascript"> function password() { var testV = 1; var pass1 = ...
- K3/Cloud点按钮打开单据,列表,动态表单,简单账表和直接Sql报表示例
BOS IDE中配置了个界面,拖了动态表单界面,加了5个测试按钮. 点击“打开单据”维护界面, 会跳转到一个新的主界面页签,[物料]新增 点击“打开列表”,会弹出[物料]列表界面 点击“打开动态表单” ...
- java异常处理课后作
1.动手动脑 源码 import javax.swing.*; class AboutException { public static void main(String[] a) { ...