烽火传递
来源:互联网 发布:云代账软件收费吗 编辑:程序博客网 时间:2024/04/27 19:20
描述 Description
烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情。在某两座城市之间有n个烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确的传递,在m个烽火台中至少要有一个发出信号。现输入n、m和每个烽火台发出的信号的代价,请计算总共最少需要话费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确的传递!!!
输入格式 InputFormat
第一行有两个数n,m分别表示n个烽火台,在m个烽火台中至少要有一个发出信号。
第二行为n个数,表示每一个烽火台的代价。
输出格式 OutputFormat
一个数,即最小代价。
样例输入 SampleInput
5 3
1 2 5 6 2
样例输出 SampleOutput
4
这算是一个单调队列与动态规划简单合并的一个水题,但是真正搞懂以后还是感觉代码超赞的
#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>using namespace std;const int INF=1<<30;int q[100005],a[1000005],f[1000005];int main(){ int n,i,k; while (~scanf("%d%d",&n,&k)) { int l=0,r=0; for (i=1;i<=n;i++) scanf("%d",&a[i]); for (i=1;i<=n;i++) { while (l<=r&&q[l]<i-k) l++; f[i]=a[i]+f[q[l]]; while (l<=r&&f[q[r]]>f[i]) r--; q[++r]=i; } int Min=INF; for (i=n-k+1;i<=n;i++) Min=min(Min,f[i]); printf("%d\n",Min); } return 0;}
0 0
- 烽火传递
- 烽火传递
- 烽火传递
- 烽火传递
- 烽火传递
- NOIP2010初赛 烽火传递
- 【tyvj1313】烽火传递
- NKOI 2151 烽火传递
- 烽火传递NOIP2010
- 烽火传递 单调队列
- <单调队列>3.烽火传递
- 烽火传递 dp+单调队列
- NOIP2010 烽火传递 队列DP
- 单调队列之烽火传递问题
- 单调队列——烽火传递
- [tyvj1313]烽火传递(单调队列dp)
- tyvj P1313 [NOIP2010初赛]烽火传递
- NKOJ 2151【单调队列】烽火传递 单调队列优化DP
- 柱形图
- Flex 分页预览,分页打印
- Codeforces Beta Round #22 (Div. 2 Only)-D. Segments
- bootstrap笔记-bootstrap实际运用
- 粗暴使用Axsure RP 7.0
- 烽火传递
- geek草原
- 【STL】模拟STL中的List轮
- Hacker Life
- 序列化与反序列化
- Session的使用方法
- android 自定义view_圆形进度条
- ajax原理和XmlHttpRequest对象
- 数组中重复的数字