传送门
题解:
对于每一个必须用同一个喷头覆盖的区间[s,e],把s+1,e-1覆盖一下。如果某个位置i被覆盖过了,它就一定不能作为一个喷头覆盖的右端点。
让f[i]表示覆盖0..i的最小喷头数量。
dp方程:
   infinf 当i被覆盖了当i被覆盖了
f[i]=f[i]=
   min{f[i−2∗a],f[i−2∗a−2]..f[i−2∗b]}+1min{f[i−2∗a],f[i−2∗a−2]..f[i−2∗b]}+1 当i没有被覆盖,用半径a到b的以i为右端点覆盖,取最小值当i没有被覆盖,用半径a到b的以i为右端点覆盖,取最小值
后面的一坨东西直接扔单调队列维护即可。
代码:

#include<cstdio>
const int N=1000005,inf=0x3f3f3f3f;
int n,l,a,b,s,e,head,tail,c[N],f[N],q[N];
int main(){scanf("%d%d%d%d",&n,&l,&a,&b);for(int i=1;i<=n;i++){scanf("%d%d",&s,&e);c[s+1]++;c[e]--;}for(int i=1;i<=l;i++){c[i]+=c[i-1];}head=1,tail=0;for(int i=2;i<=l;i+=2){while(head<=tail&&q[head]<i-2*b){head++;}if(i-2*a>=0){while(head<=tail&&f[i-2*a]<=f[q[tail]]){tail--;}q[++tail]=i-2*a;}if(c[i]){f[i]=inf;}else{if(head<=tail){if(f[q[head]]!=inf){f[i]=f[q[head]]+1;}else{f[i]=inf;}}else{f[i]=inf;}}}printf("%d\n",f[l]==inf?-1:f[l]);return 0;
}

转载于:https://www.cnblogs.com/2016gdgzoi471/p/9476892.html

【poj2373】Dividing the Path【单调队列优化dp】相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 单调队列以及单调队列优化DP

    单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...

  7. POJ 1821 Fence(单调队列优化DP)

    题解 以前做过很多单调队列优化DP的题. 这个题有一点不同是对于有的状态可以转移,有的状态不能转移. 然后一堆边界和注意点.导致写起来就很难受. 然后状态也比较难定义. dp[i][j]代表前i个人涂 ...

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

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

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

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

  10. 【单调队列优化dp】jzoj4883灵知的太阳信仰 纪中集训提高B组

    [NOIP2016提高A组集训第12场11.10]灵知的太阳信仰 (File IO): input:array.in output:array.out Time Limits: 1000 ms Mem ...

最新文章

  1. 电容充放电原理图_干货 | 入门开关电源,这些原理图一定要读懂
  2. pymysql.err.InternalError: (1130, Host '127.0.0.1' is not allowed to connect to this MySQL server)
  3. mysql控制台导出查询结果_MySQL 命令行导出、导入Select 查询结果
  4. python测试开发工程师前景_对未来测试开发工程师的前景你怎么看?
  5. javax.servlet.http.HttpServlet response 解决jsp中中文乱码
  6. 软件性能分析与优化详解
  7. Java根据关键字在PDF/Word插入图片
  8. MS17-010漏洞复现(带win7虚拟机安装,零基础)
  9. 2018.07.27
  10. 英语专升本——常考固定搭配【一百零八将】
  11. Python基础笔记
  12. 使用mindspore过程中Using shared memory queue, but rowsize is larger than allocated
  13. vue-element-admin基础学习
  14. 如何实现有效的项目进度控制
  15. 计算机视觉基础之IoU和mIoU
  16. myeclipse加大内存
  17. 软考-嵌入式系统设计师:[网络安全:笔记(六)]
  18. 常用温度控制方法原理
  19. zbb20180930 设计模式-单例模式
  20. 人体部位检测:BodyHands

热门文章

  1. 【渝粤教育】国家开放大学2018年秋季 0553-22T色彩 参考试题
  2. 【渝粤教育】国家开放大学2018年春季 0706-22T行政管理学导论 参考试题
  3. 【渝粤教育】国家开放大学2018年春季 0706-21T行政管理学导论 参考试题
  4. 【渝粤题库】陕西师范大学200561 英语写作(一) 作业
  5. 【渝粤题库】陕西师范大学800000 地图学原理
  6. C++ Primer Plus 第三章编程练习
  7. PARDISO 5.0.0 Solver Project
  8. 451 Sort Characters By Frequency 根据字符出现频率排序
  9. [转]vc6.0安装boost1.34.1
  10. 多维数组和矩阵----子数组最大累加和