题意:





思路:

f[i] = min(f[j]) + 1; 2 * a <= i - j <= 2 *b;

i表示当前在第i个点。f[i]表示当前最少的线段个数

先是N^2的朴素DP(果断TLE)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,l,A,B,tot=1,xx,yy,f[1000050];
struct Node{int x,y;}node[1050];
bool cmp(Node a,Node b){if(a.x!=b.x)return a.x<b.x;return a.y<b.y;}
int main()
{
memset(f,0x3f,sizeof(f));
f[0]=0;
scanf("%d%d%d%d",&n,&l,&A,&B);
for(int i=1;i<=n;i++){
scanf("%d%d",&node[i].x,&node[i].y);
}
sort(node+1,node+1+n,cmp);
for(int i=1;i<=l;i++){
while(i>node[tot].x&&tot<n){i=node[tot].y;tot++;}
if(i&1)continue;
for(int j=2*A;j<=2*B;j+=2){
f[i]=min(f[i],f[i-j]+1);
}
}
printf("%d\n",f[l]);
}

下面我们开始想优化…

a和b都是常数,,他要找一个最大值。。

1.线段树优化 (卡时过)

2.单调队列优化

注意插入的时候要等到算f[i+2*a]的时候再把f[i]插到队列里。

(用STL的双端队列写得)

//By SiriusRen
#include <deque>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,l,A,B,tot=1,xx,yy,f[1000050];
struct Node{int x,y;}node[1050],jy;
bool cmp(Node a,Node b){if(a.x!=b.x)return a.x<b.x;return a.y<b.y;}
deque<Node>q;
int main(){
memset(f,0x3f,sizeof(f)),f[0]=0;
scanf("%d%d%d%d",&n,&l,&A,&B);
for(int i=1;i<=n;i++)scanf("%d%d",&node[i].x,&node[i].y);
sort(node+1,node+1+n,cmp);
for(int i=1;i<=n;i++)
for(int j=max(node[i].x+1,node[i-1].y);j<node[i].y;j++)f[j]=0x5fffffff;
for(int i=A*2;i<=l;i+=2){
while(!q.empty()&&q.front().x<i-2*B)q.pop_front();
while(!q.empty()&&q.back().y>f[i-2*A])q.pop_back();
if(f[i-2*A]<0x3ffffff)
jy.x=i-2*A,jy.y=f[i-2*A],q.push_back(jy);
if(f[i]>=0x4fffffff)continue;
if(!q.empty())f[i]=q.front().y+1;
}
if(f[l]<0x3ffffff)printf("%d\n",f[l]);
else puts("-1");
}

最新文章

  1. 移除HTML5 input在type=&quot;number&quot;时的上下小箭头
  2. TreeMap 的实现
  3. Java适配器设计模式
  4. JQuery实战手风琴-遁地龙卷风
  5. [转帖]DAS、NAS、SAN、iSCSI 存储方案概述
  6. sax,Dom,等解析方式地址 ?
  7. python基础:day3作业
  8. Android SeekBar的OnSeekBarChangeListener
  9. 浅谈iOS中的视图优化
  10. C语言之Static
  11. 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
  12. 挂载mount
  13. GBK和UTF8的区别
  14. 图片验证码(Struts2中使用)
  15. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-8CDH5安装和集群配置
  16. mysql5.7 的 user表的密码字段从 password 变成了 authentication_string
  17. 第二十九节,目标检测算法之R-CNN算法详解
  18. Java常用的九种排序方法及代码实现
  19. 前端 HTML body标签相关内容 常用标签 列表标签 ul,ol,li
  20. java 常用异常及作用

热门文章

  1. 机器学习之&amp;amp;&amp;amp;Andrew Ng课程复习--- 聚类——Clustering
  2. Swift开发教程--怎样使UITableViewController背景透明
  3. UVA - 10689 Yet another Number Sequence 矩阵快速幂
  4. linux 下的文件搜索、可执行文件搜索
  5. xBIM 基础11 WeXplorer 常用事件
  6. localStorage、sessionStorage的区别
  7. 3ds Max实例教程-制作卡通蓝色小人
  8. NetworkX-画图
  9. 运维派 企业面试题6 防dos攻击
  10. Nginx 禁止 ip 访问