3156: 防御准备

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 1349  Solved: 605
[Submit][Status][Discuss]

Description

 

Input

第一行为一个整数N表示战线的总长度。

第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai。

Output

共一个整数,表示最小的战线花费值。

Sample Input

10
2 3 1 5 4 5 6 3 1 2

Sample Output

18

HINT

1<=N<=10^6,1<=Ai<=10^9

 
题解
    首先把序列倒过来方便处理。
    令f[i]表示第i个位置放守卫塔的情况下前i个全部通过检查的最小花费,则f[i]=min{f[j]+(i-j)(i-j-1)/2},发现时间复杂度不对,显然可以看出来用斜率优化。
     设f[j]+(i-j)(i-j-1)/2<=f[k]+(i-k)(i-k-1)/2,移项化简得到f[j]+j(j+1)-(f[k]+k(k+1))<=2i(j-k)斜率优化的形式,然后单调队列维护。
     其实都是套路。
 /**************************************************************
Problem:
User:
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ program j01;
var f,a:array[..]of int64;
n,i,j:longint;
l:array[..]of longint;
h,tail:longint;
pre:int64; function min(a,b:int64):int64;
begin
if a<b then exit(a) else exit(b);
end; function KK(k,j:longint):double;
begin
exit((*(f[j]-f[k])+int64(j)*(j+)-int64(k)*(k+))/(*(j-k)));
end; begin
readln(n);
for i:= to n do
read(a[n-i+]);
a[n+]:=;
h:=;tail:=;l[tail]:=;f[]:=a[];
for i:= to n+ do
begin
while (h<tail)and(KK(l[h],l[h+])<=i) do inc(h);
pre:=l[h];
f[i]:=a[i]+f[pre]+((i-pre)*(i-pre-) div );
while (h<tail)and(KK(l[tail],i)<=KK(l[tail-],l[tail])) do dec(tail);
inc(tail);l[tail]:=i;
end;
writeln(min(f[n],f[n+]));
end.

bzoj3156防御准备的更多相关文章

  1. BZOJ3156: 防御准备

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 442  Solved: 210[Submit][Status] Descript ...

  2. bzoj3156防御准备 斜率优化dp

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2279  Solved: 959[Submit][Status][Discuss ...

  3. BZOJ3156 防御准备 动态规划 斜率优化

    原文链接http://www.cnblogs.com/zhouzhendong/p/8688187.html 题目传送门 - BZOJ3156 题意 长为$n$的序列$A$划分,设某一段为$[i,j] ...

  4. BZOJ3156 防御准备(动态规划+斜率优化)

    设f[i]为在i放置守卫塔时1~i的最小花费.那么显然f[i]=min(f[j]+(i-j)*(i-j-1)/2)+a[i]. 显然这是个斜率优化入门题.将不与i.j同时相关的提出,得f[i]=min ...

  5. BZOJ3156: 防御准备 【斜率优化dp】

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2207  Solved: 933 [Submit][Status][Discu ...

  6. [BZOJ3156]防御准备(斜率优化DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3156 分析: 简单的斜率优化DP

  7. bzoj3156 防御准备 - 斜率优化

    Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sample Input 102 3 ...

  8. 2018.09.29 bzoj3156: 防御准备(斜率优化dp)

    传送门 斜率dp经典题目. 然而算斜率的时候并没有注意到下标的平方会爆int于是咕咕*2. 这道题我用了两个数组来表示状态. f[i]f[i]f[i]表示最后i个位置倒数第i个放木偶的最优值. g[i ...

  9. BZOJ3156 防御准备 斜率优化dp

    Description   Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ...

随机推荐

  1. Oracle中如何删除某个用户下的所有数据的方法

    win+R打开cmd 使用dba身份登录: sqlplus sys/sys@orcl as sysdba; 然后使用dba身份删除某个用户: drop user apptdm_9y cascade;

  2. jQuery Validation让验证变得如此容易(三)

    以下代码进行对jQuery Validation的简单演示包括必填项.字符长度,格式验证 一.引入文件 <script src="js/jquery-1.8.0.min.js" ...

  3. Eclipse plugin web site 发布和版本更新

    Eclipse plugin web site 发布和版本更新 在eclipse插件开发过程中免不了要发布1.0, 1.1, 1.2…….等等,随着版本的递增,假如每次都发布一个插件zip包,那使用者 ...

  4. 人工智能搜索算法(深度优先、迭代加深、一致代价、A*搜索)

    搜索算法问题求解 一.需求分析 分别用深度优先.迭代加深.一致代价.A*搜索算法得到从起始点Arad到目标点Bucharest的一条路径,即为罗马尼亚问题的一个解,在求解的过程中记录每种算法得到的解, ...

  5. ibatis-Spring 整合

    这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的,但程序一旦跑起来了,突然有一种豁然开朗,重见天日,感觉生活很美好的感觉!,也许,这就是那一行行的代码带给我们的不同 ...

  6. 图像资源Images Assets

    图像资源Images Assets 开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1 ...

  7. JDBC连接数据库(MySQL)

    package com.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSe ...

  8. 异常:failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException]

    异常: failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException] 大家好,如果大家看到了 ...

  9. 你的MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~

    早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过? 博客园:MongoDB数据库勒索,中国受害者数量超乎你的想象,SOS! 1. 由于自己之前做过的项目,R ...

  10. express搭建简易web的服务器

    express搭建简易web的服务器 说到express我们就会想到nodejs,应为它是一款基于nodejs平台的web应用开发框架.既然它是基于nodejs平台的框架那么就得先安装nodejs. ...