NOIP2010初赛 烽火传递
来源:互联网 发布:win2008 80端口被占用 编辑:程序博客网 时间:2024/04/27 19:41
Description
烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情,在某两座城市之间有
Input
第一行:两个整数
Output
一行,表示答案。
Sample Input
5 3
1
2
5
6
2
Sample Output
4
Data Constraint
对于50%的数据,
Solution
很明显,对于第
因此我们设
如果第i个烽火台不点燃,那么在
如果点燃,当前最小代价就是前
但是有个问题。
如果每次都枚举,那么复杂度则变为
所以,这里就是单调队列的登场\(^o^)/
单调队列,简单地说,就是能快速寻找某点前的最大/最小值的玩意儿。
对于这题来讲,当然是维护使
单调队列进出队操作
进队时,将进队的元素为
出队时,将出队的元素为
附:此篇为笔者人生第一篇博客,内容和排版这些细节先不必在意啦。
CODE
var n,m,i,j,head,tail,j2:longint; a:array[1..100000] of longint; k:array[1..100000,1..2] of longint; f:array[1..100000,0..1] of longint; p:boolean;function min(x,y:longint):longint;begin if x<y then exit(x) else exit(y);end;begin readln(n,m); // for i:=1 to n do f[i,0]:=maxlongint; for i:=1 to n do readln(a[i]); f[1,1]:=a[1]; f[2,0]:=a[1]; f[2,1]:=a[2]; k[1,1]:=a[1]; k[1,2]:=1; tail:=1; head:=1; for i:=3 to m do begin f[i,1]:=a[i]; p:=true; for j:=tail downto head do if k[j,1]<=f[i-1,1] then begin p:=false; k[j+1,1]:=f[i-1,1]; k[j+1,2]:=i-1; tail:=j+1; break; end; if p then begin k[head,1]:=f[i-1,1]; k[head,2]:=i-1; tail:=head; end; f[i,0]:=k[head,1]; end; for i:=m+1 to n do begin p:=true; for j:=tail downto head do if k[j,1]<=f[i-1,1] then begin p:=false; k[j+1,1]:=f[i-1,1]; k[j+1,2]:=i-1; tail:=j+1; break; end; if p then begin k[head,1]:=f[i-1,1]; k[head,2]:=i-1; tail:=head; end; f[i,1]:=k[head,1]+a[i]; for j:=head to tail do begin if k[head,2]=i-m then begin for j2:=head to tail do if k[j2,2]>k[head,2] then begin head:=j2; break; end; end; end; f[i,0]:=k[head,1]; end; writeln(min(f[n,1],f[n,0]));end.
- NOIP2010初赛 烽火传递
- tyvj P1313 [NOIP2010初赛]烽火传递
- 【NOIP2010初赛】【斜率优化】【DP】烽火传递 题解
- 烽火传递NOIP2010
- NOIP2010 烽火传递 队列DP
- 烽火传递
- 烽火传递
- 烽火传递
- 烽火传递
- 烽火传递
- noip2010初赛-哥德巴赫猜想
- 【tyvj1313】烽火传递
- NKOI 2151 烽火传递
- 烽火传递 单调队列
- <单调队列>3.烽火传递
- 烽火传递 dp+单调队列
- 单调队列之烽火传递问题
- 单调队列——烽火传递
- Android之PullToRefresh(ListView 、GridView 、WebView)使用详解和总结
- 知识复习(LDT+TSS+GATE+INTERRUPT)
- 在Eclipse中添加Servlet-api.jar的方法
- Ubuntu虚拟机使用NAT方式连接(有线网、无线网测试均可用)
- Apache或者nginx反向代理时,request.getservername()出现的问题!
- NOIP2010初赛 烽火传递
- 【模式匹配】之 —— Z-BOX算法
- 机器学习岗位找工作记录帖-百度,大众点评offer到手
- [HW] OJ记录20题之二
- linux centos svn 安装配置自动同步更新web服务
- dealloc函数中变量的release
- 简述fragment(上)
- dealloc方法与release
- 文件系统(操作系统)