描述

烽火台是重要的军事防御设施,一般建在交通要道或险要处。一旦有军情发生,则白天用浓烟,晚上有火光传递军情。
在某两个城市之间有 n 座烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确传递,在连续 m 个烽火台中至少要有一个发出信号。现在输入 n,m 和每个烽火台的代价,请计算总共最少的代价在两城市之间来准确传递情报。

输入

第一行是 n,m ,表示 n 个烽火台和连续烽火台数 m ;
第二行 n 个整数表示每个烽火台的代价 ai

输出

输出仅一个整数,表示最小代价。

样例输入

5 3
1 2 5 6 2

样例输出

4

提示

在第 2,5 号烽火台上发信号。
对于全部数据,1≤n,m≤2×105,1≤ai≤1000

标签

NOIP2010提高组初赛 · 完善程序


好像就是一个挺裸的单调队列优化dp,f[i]表示i这个位置选的最优值。
于是f[i]的答案可以从 f[i−m] f [ i − m ] f[i-m]~ f[i−1] f [ i − 1 ] f[i-1]转移过来,显然只用维护这些值的最小值就行了。
这不就是单调队列优化dp干的事情吗?
代码:

#include<bits/stdc++.h>
#define N 200005
using namespace std;
inline int read(){int ans=0;char ch=getchar();while(!isdigit(ch))ch=getchar();while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();return ans;
}
int n,m,a[N],f[N],hd,tl,q[N];
int main(){n=read(),m=read(),hd=1,tl=1;for(int i=1;i<=n;++i)a[i]=read();for(int i=1;i<=n;++i){while(hd<tl&&q[hd]+m<i)++hd;f[i]=f[q[hd]]+a[i];while(hd<tl&&f[q[tl]]>f[i])--tl;q[++tl]=i;}int ans=0x3f3f3f3f;for(int i=n-m+1;i<=n;++i)ans=min(ans,f[i]);cout<<ans;return 0;
}

2018.09.06 烽火传递(单调队列优化dp)相关推荐

  1. [NOIP2010初赛]烽火传递--单调队列优化

    问题描述: 烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情,在某两座城市之间有n个烽火台,每个烽火台发出信 ...

  2. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)

    AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...

  3. 【单调队列优化DP】烽火传递 LibreOJ - 10180

    题目来源 点我进入提交题目 反思 因为目前在学习单调队列优化DP,所以会往单调队列上面想.然后犯了一个错误就是,认为这个题目只要用单调队列就可以完成,单调队列只是用来减少时间复杂度的,遇到了求最优解的 ...

  4. 2018.09.23 孙悟空大战鲤鱼精(单调队列优化dp)

    描述 孙悟空大战鲤鱼精,孙悟空在通天河遇到鲤鱼精,他嫉恶如仇,看见妖精就手痒(忘了自己是妖精).但是鲤鱼精知道孙悟空的厉害,在孙悟空来到通天河,鲤鱼精就跑到了河对面.于是孙悟空就去追鲤鱼精. 我们可以 ...

  5. 算法笔记--单调队列优化dp

    单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队. 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j ...

  6. poj 2373(单调队列优化dp)

    在长为L(<=1000000)的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的调节范围为[a,b].要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必 ...

  7. poj 1821(单调队列优化dp)

    题意:有一道线性篱笆由N个连续的木板组成.有K个工人,你要叫他们给木板涂色.每个工人有3个参数:L 表示 这个工人可以涂的最大木板数目,S表示这个工人站在哪一块木板,P表示这个工人每涂一个木板可以得到 ...

  8. 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)

    题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...

  9. 【计蒜客 - 蓝桥训练】蒜厂年会(单调队列优化dp,循环数列的最大子段和)

    题干: 在蒜厂年会上有一个抽奖,在一个环形的桌子上,有 nn 个纸团,每个纸团上写一个数字,表示你可以获得多少蒜币.但是这个游戏比较坑,里面竟然有负数,表示你要支付多少蒜币.因为这些数字都是可见的,所 ...

最新文章

  1. 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
  2. python爬虫入门实例-Python爬虫快速入门:基本结构简单实例
  3. 【转】Hibernate和IBatis对比
  4. redis(12)--事件,客户端,服务器
  5. 一文说透架构设计的本质
  6. 它身上的飞秋 战衣给他添上了英武的气势
  7. nginx学习文档之二 配置负载均衡-负载均衡发现的问题
  8. textarea长度限制
  9. 【OpenCV】读取显示图片及Mat类
  10. iOS开发之SQLite的Object-C封装
  11. 递推算法之平面分割问题总结
  12. c语言报告实验反思,c语言实验总结与反思
  13. 在 Pixel 3 手机上学习预测深度
  14. 【线代】齐次方程组的解
  15. Heartbeat超时值
  16. 什么是nvm,nvm详解
  17. 为什么vsdebug没有生成obj文件_VS中bin和obj文件引发的问题
  18. 一键端服务器维护,游戏服务器一键端
  19. 右键-打开方式里没有EXCEL,找到路径也打不开的解决方法
  20. Restormer: Efficient Transformer for High-Resolution Image Restoration

热门文章

  1. Spring官方文档之核心技术Core Technologies
  2. java 调用c_java调用C++/C的三种方式
  3. 自由浏览播放不了html5,囤货备战剁手节!360安全浏览器“抢货快”三招玩爽双十一...
  4. 常见的性能测试与应用领域
  5. python中array的用法_Python中的numpy.array()用法
  6. (坑记)GenymotionVirtualBox下载到配置和OVA的正确配置流程
  7. EOJ3533. 庙会
  8. dotnet core使用websocket通信
  9. 【六一】90后的你们还记得年少时的梦吗?还记得你们当初追的奥特曼吗?现在就让我们一起回味我们逝去的曾经吧!
  10. 【接口篇 / Wan】(7.0) ❀ 03. 配置固定 IP 宽带上网 ❀ FortiGate 防火墙