【NOIP2017练习】鏖战字符串(斜率优化DP)
题意:

var dp:array[..]of int64;
s:array[..]of int64;
q1,q2,f:array[..]of longint;
l,r:array[..]of longint;
n,a,b,c,d,l0,r0,i,x,nowl,nowr,t1,w1,t2,w2,t,j,k:longint;
ch:ansistring; function cmp(x,y,z:longint):boolean;
var x1,y1,x2,y2:int64;
begin
x1:=sqr(s[x])*a-sqr(s[y])*a+dp[x]-dp[y];
y1:=s[x]-s[y];
x2:=sqr(s[y])*a-sqr(s[z])*a+dp[y]-dp[z];
y2:=s[y]-s[z];
if x1*y2>=x2*y1 then exit(true);
exit(false);
end; function clac(j,i:longint):int64;
begin
exit(dp[j]+sqr(s[i]-s[j])*a+b);
end; function min(x,y:int64):int64;
begin
if x<y then exit(x);
exit(y);
end; begin
assign(input,'string.in'); reset(input);
assign(output,'string.out'); rewrite(output);
readln(n,a,b,c,d,l0,r0);
readln(ch);
for i:= to n do f[i]:=ord(ch[i])-ord('a')+;
for i:= to n do
begin
read(x); s[i]:=s[i-]+x;
end;
t1:=; w1:=; q1[]:=; dp[]:=;
t2:=; w2:=;
nowl:=; nowr:=;
for i:= to n do
begin
while (t1<w1)and(clac(q1[t1],i)>=clac(q1[t1+],i)) do inc(t1);
dp[i]:=clac(q1[t1],i); inc(l[f[i]]); inc(r[f[i]]);
while l[f[i]]>r0 do
begin
dec(l[f[nowl]]);
inc(nowl);
while (t2<=w2)and(q2[t2]+<nowl) do inc(t2);
end;
while r[f[i]]>=l0 do
begin
if nowr> then
begin
dec(r[f[nowr]]);
if r[f[i]]<l0 then
begin
inc(r[f[nowr]]);
break;
end;
end;
while (t2<=w2)and(dp[nowr]-s[nowr]*c<=dp[q2[w2]]-s[q2[w2]]*c) do dec(w2);
inc(w2); q2[w2]:=nowr;
inc(nowr);
end;
if t2<=w2 then
begin
t:=q2[t2];
dp[i]:=min(dp[i],dp[t]+(s[i]-s[t])*c+d);
end;
while (t1<w1)and cmp(q1[w1-],q1[w1],i) do dec(w1);
inc(w1); q1[w1]:=i;
end;
for i:= to n do writeln(dp[i]);
close(input);
close(output);
end.
【后记】
在Abwad和nbc同时将最后一个子串删去时,一个带着黑色方框眼镜,方脸,穿着高腰裤的长者,乘着圣洁的祥云,飞进了YYHS的机房。
在他伟大的思想的启发下,Abwad和nbc终于放下了对名利的追逐,找到了人生的意义——吃吃吃。从此,他们过上了幸福快乐的生活……
【NOIP2017练习】鏖战字符串(斜率优化DP)的更多相关文章
- bzoj-4518 4518: [Sdoi2016]征途(斜率优化dp)
题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地 ...
- bzoj-1096 1096: [ZJOI2007]仓库建设(斜率优化dp)
题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L ...
- [BZOJ3156]防御准备(斜率优化DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3156 分析: 简单的斜率优化DP
- 【BZOJ-1096】仓库建设 斜率优化DP
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3719 Solved: 1633[Submit][Stat ...
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP
1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...
- BZOJ 3156: 防御准备 斜率优化DP
3156: 防御准备 Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战 ...
- HDU2829 Lawrence(斜率优化dp)
学了模板题之后上网搜下斜率优化dp的题目,然后就看到这道题,知道是斜率dp之后有思路就可以自己做不出来,要是不事先知道的话那就说不定了. 题意:给你n个数,一开始n个数相邻的数之间是被东西连着的,对于 ...
- HDU3507 Print Article(斜率优化dp)
前几天做多校,知道了这世界上存在dp的优化这样的说法,了解了四边形优化dp,所以今天顺带做一道典型的斜率优化,在百度打斜率优化dp,首先弹出来的就是下面这个网址:http://www.cnblogs. ...
- HDU 3507 Print Article(斜率优化DP)
题目链接 题意 : 一篇文章有n个单词,如果每行打印k个单词,那这行的花费是,问你怎么安排能够得到最小花费,输出最小花费. 思路 : 一开始想的简单了以为是背包,后来才知道是斜率优化DP,然后看了网上 ...
- 斜率优化dp(POJ1180 Uva1451)
学这个斜率优化dp却找到这个真心容易出错的题目,其中要从n倒过来到1的确实没有想到,另外斜率优化dp的算法一开始看网上各种大牛博客自以为懂了,最后才发现是错了. 不过觉得看那些博客中都是用文字来描述, ...
随机推荐
- Mybatis查询select操作
先看select标签的属性: 说几点: resultType和resultMap都是用来表示结果集的类型的,resultType用于简单的HashMap或者是简单的pojo对象,而resultSet是 ...
- [转]Keyword Reference (F#)
Visual F# Development Portal http://msdn.microsoft.com/en-us/library/vstudio/ff730280.aspx 本文转自:http ...
- 原型模式及php实现
原型模式: 通过复制已经存在的实例来返回新的实例,而不是新建实例,并且原型(被复制的实例)是可定制的:原型模式多用于创建复杂的或耗时的实例,这种情况下,复制一个已经存在的实例是程序运行更高效无疑是一种 ...
- 常用linux命令大全 转载自:https://www.cnblogs.com/laov/p/3541414.html(大牛笔记)
Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...
- Nginx server_name 正则泛域名反向代理两例
最近在学习Nginx搭建负载均衡系统,感觉系统部署方式的思路瞬间开阔了很多. 负载均衡服务器的后端服务器上各自有一套功能相同的WEB管理系统,主要作用是方便的对各自服务器的IIS站点及服务器防火墙测量 ...
- javscript 导出html中的table到excel
<script language="JavaScript" type="text/javascript"> /* * 默认转换实现函数,如果需要其他 ...
- sql server 强制关闭连接
USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) FROM ma ...
- convertquota - 把老的配额文件转换为新的格式
总览 (SYNOPSIS) convertquota [ -ug ] filesystem 描述 (DESCRIPTION) convertquota 把老的配额文件 quota.user 和 quo ...
- 测试ip是否可以ping通
7.写一个脚本hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通.如果能ping通,则提示用户“该IP地址可访问”:如果不可ping通,则提示用户“该IP地址不可访问 参考脚本 ...
- Zend Studio / Eclipse 缩进设置
首先是Window – Preferences打开Preferences配置对话框: 然后依次找到PHP – Code Style – Formatter,如下图所示: 这里注意一下Active pr ...