题目传送门

烽火台是重要的军事防御设施,一般建在交通要道或险要处。

一旦有军情发生,则白天用浓烟,晚上有火光传递军情。

在某两个城市之间有 n 座烽火台,每个烽火台发出信号都有一定的代价。

为了使情报准确传递,在连续 m 个烽火台中至少要有一个发出信号。

现在输入 n,m 和每个烽火台的代价,请计算在两城市之间准确传递情报所需花费的总代价最少为多少。

输入格式

第一行是两个整数 n,m,具体含义见题目描述;

第二行 n 个整数表示每个烽火台的代价 ai。

输出格式

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

数据范围

1≤n,m≤2×105
0≤ai≤1000

输入样例:

5 3
1 2 5 6 2

输出样例:

4

题解:

设f(i)表示从i个烽火台合法且第i个烽火台被点燃的花费最小值

则f(i) = min(f(j)) + w[i] (i - m <= j <= i)

根据条件(i - m <= j <= i) 可知这是一个区间求单调递增队列问题

#include<iostream>
#include<cstring>
using namespace std;
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
int a[N];
int st[N], l, r;
int f[N];
int main()
{int n, m;cin >> n >> m;for(int i = 1; i <= n; i++)cin >> a[i];//开始有一个元素f[0], 所以让r = 0, 而不是-1l = 0, r = 0;for(int i = 1; i <= n; i++){while(l <= r && i - st[l] > m)l++;f[i] = f[st[l]] + a[i];while(l <= r && f[st[r]] >= f[i])r--;st[++r] = i;}int ans = INF;for(int i = n - m + 1; i <= n; i++) ans = min(ans, f[i]);cout << ans << endl;return 0;
}

AcWing1089.烽火传递(单调队列DP)相关推荐

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

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

  2. bzoj1791,P4381-[IOI2008]Island【基环树,树形dp,单调队列dp,树的直径】

    正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P4381 题目大意 有n个岛,n条无向边(保证每个岛都有边连到).走过 ...

  3. P3580 [POI2014]ZAL-Freight(单调队列dp)

    P3580 [POI2014]ZAL-Freight(单调队列dp) 考虑两辆车怎么样是最优的. t1,t2,St_1,t_2,St1​,t2​,S t1+St_1+St1​+S 第一辆车:[t1,t ...

  4. 刷题总结——烽火传递(单调队列+dp)

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

  5. POJ 1821 单调队列+dp

    题目大意:有K个工人,有n个墙,现在要给墙涂色.然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂 ...

  6. P3957-跳房子【单调队列,dp,二分】

    前言 链接: https://www.luogu.org/record/show?rid=7915892 这就是之前普及组的第四题- 大意 有n个格子,每个格子有价值.机器人有固定的跳跃距离d,用k个 ...

  7. BZOJ 1791 岛屿(环套树+单调队列DP)

    题目实际上是求环套树森林中每个环套树的直径. 对于环套树的直径,可以先找到这个环套树上面的环.然后把环上的每一点都到达的外向树上的最远距离作为这个点的权值. 那么直径一定就是从环上的某个点开始,某个点 ...

  8. codeforces - 1216F WIFI(单调队列+DP)

    传送门 题意:有n个房间,需要把n个房间全部连上网,可以使用i的代价直接将第i个房间连上网.有一些房间可以放路由器,代价也是他的标号i,路由器可以使得i-k,到i+k之间所有房间通上网,求最小代价使得 ...

  9. Codeforces Round #466 (Div. 2): E. Cashback(单调队列+DP)

    题目链接:http://codeforces.com/contest/940/problem/E 题意:给你一个长为n的序列和一个数字c,你要将这个序列切成若干段,对于每一段,这段中最小的[n/c]个 ...

最新文章

  1. How to create a site with AJAX enabled in MVC framework.
  2. NOIP2013Day1T3 表示只能过一个点
  3. linux系统 opt扩容,Linux虚拟机新增加了块100G硬盘后,把空间分配到/opt下
  4. 【STM32】 keil软件工具--菜单详解
  5. 猎豹MFC--CFile类家族介绍ADO连接数据库 打开数据库 关闭数据库 连接字符串
  6. python编程自学好学吗 ?
  7. html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码
  8. python项目源码 日程管理_怎么用python写作息时间安排呢?
  9. 川蔚蓝:追求品质、创新发展;以诚为根,以客为本
  10. 解决雷神笔记本风扇声音太响太吵问题
  11. Ubuntu下 百度在线语音合成使用
  12. 计算机多媒体最新参考文献,多媒体技术计算机论文,关于基于多媒体技术计算机教学因相关参考文献资料-免费论文范文...
  13. Java客户关系管理CRM源码带小程序
  14. 05. 路由协议原理
  15. SuperMap iDesktop常见问题解答集锦(六)
  16. Arthas开源一周年,Github Star 16K,我们一直在坚持什么?
  17. 通过百度地图API获取用户所在地理位置信息
  18. (跨平台UI)单片机用MTF HMI串口屏 UART通信易用兼容
  19. vue中父组件传图片路径src给子组件无法正常显示图片
  20. SQLServer 统计数据量

热门文章

  1. 【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解-破解软件论坛-ZOL中关村在线...
  2. PHP 下载远程图片
  3. Java反射机制剖析(一)-定义和API
  4. jquery实现无刷新分页,跳转
  5. InheritableThreadLocal使用
  6. cn.cw.gps.domain.VisitReport.setVisitID([Ljava.lang.String;)]
  7. (转)C#中的Abstract和Virtual函数区分,因我老弄不明白这个问题,所以转到这儿
  8. Flink入门训练--以New York City Taxi为例
  9. orchard学习,
  10. luogu2680 运输计划