最小覆盖_KEY
最小覆盖(cover)、、线段树
【题目描述】
给定 N 个区间[Li,Ri],需要你按照顺序选出一个区间序列使得[1,M]完全被覆盖。并且在选出来的序列中,某个区间[a,b]之前必须保证[1,a]都被已经选中的区间覆盖(即没有“断开”的地方)。求出最少需要选多少区间
【输入文件】
第一行两个整数 M 和 N。
以下 N 行每行两个正整数 Li,Ri 表示这个区间。
【输出文件】
一个整数,表示最少的区间数。
【样例输入】
40 6
20 30
1 10
10 20
20 30
15 25
30 40
【样例输出】
4
【样例解释】
[1,10]-[10,20]-[20,30]-[30,40]
【数据规模】
对于 100%的数据 1<=N<=500000, 0<=M<=50000
先不看数据,知道这是一道DP题。
F[i]表示填满1~i区间最少需要几个区间。
因为数据范围大,所以用线段树维护。
code:
#include <cstdio>
#include <cctype>
#include <algorithm>
#define C c = tc ( )
using namespace std;
inline char tc(){
static char fl[],*A,*B;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
inline int read(){
char c;int x=,y=;
while(!isdigit(C)&&c!='-');c=='-'?y=-:x=c-'';
while(isdigit(C))x=x*+c-'';
return x*y;
}
struct node{
int x,y;
}a[];
int m,n,seg[*+],add[*+];
void up(int node){seg[node]=min(seg[node<<],seg[(node<<)+]);}
void down(int node){
if(add[node]!=){
add[node*]=min(add[node*],add[node]);
add[node*+]=min(add[node*+],add[node]);
seg[node*]=min(seg[node*],add[node]);
seg[node*+]=min(seg[node*+],add[node]);
add[node]=;
}
return ;
}
int query(int node,int l,int r,int ql,int qr){
if(ql<=l&&qr>=r)return seg[node];
int mid=(l+r)>>;
down(node);
int ans=;
if(ql<=mid)ans=min(ans,query(node*,l,mid,ql,qr));
if(qr>mid) ans=min(ans,query(node*+,mid+,r,ql,qr));
return ans;
}
void change(int node,int l,int r,int cl,int cr,int v){
if(cl<=l&&cr>=r){
seg[node]=min(seg[node],v);
add[node]=min(add[node],v);
return ;
}
int mid=(l+r)>>;
down(node);
if(cl<=mid)change(node*,l,mid,cl,cr,v);
if(cr>mid) change(node*+,mid+,r,cl,cr,v);
up(node);
}
int main(){
freopen("cover.in","r",stdin);
freopen("cover.out","w",stdout);
m=read(),n=read();
for(int i=;i<=n;i++)a[i].x=read(),a[i].y=read();
for(int i=;i<=m*;i++)seg[i]=add[i]=;
change(,,m,,,);
for(int i=;i<=n;i++){
int p=query(,,m,a[i].x,a[i].y);
if(p==)continue;
change(,,m,a[i].x,a[i].y,p+);
}
printf("%d",query(,,m,m,m));
fclose(stdin),fclose(stdout);
return ;
}
膜拜度神
最小覆盖_KEY的更多相关文章
- POJ2185Milking Grid(最小覆盖子串 + 二维KMP)
题意: 一个r*c的矩形,求一个子矩形通过平移复制能覆盖整个矩形 关于一个字符串的最小覆盖子串可以看这里http://blog.csdn.net/fjsd155/article/details/686 ...
- UVA 11419SAM I AM(输出 最小覆盖点 )
参考博客:如何找取 最小覆盖点集合 题意:R*C大小的网格,网格上面放了一些目标.可以再网格外发射子弹,子弹会沿着垂直或者水平方向飞行,并且打掉飞行路径上的所有目标,计算最小多少子弹,各从哪些位置发射 ...
- 二维KMP - 求字符矩阵的最小覆盖矩阵 - poj 2185
Milking Grid Problem's Link:http://poj.org/problem?id=2185 Mean: 给你一个n*m的字符矩阵,让你求这个字符矩阵的最小覆盖矩阵,输出这个最 ...
- KMP算法 - 求最小覆盖子串
KMP与最小覆盖子串 最小覆盖子串:对于某个字符串s,它的最小覆盖子串指的是长度最小的子串p,p满足通过自身的多次连接得到q,最后能够使s成为q的子串. 比如: 对于s="abcab&quo ...
- hdu---(1054)Strategic Game(最小覆盖边)
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu------1281 棋盘游戏(最小覆盖点)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Machine Schedule(最小覆盖)
其实也是个最小覆盖问题 关于最小覆盖http://blog.csdn.net/u014665013/article/details/49870029 Description As we all kno ...
- Asteroids (最小覆盖)
题目很简单,但是需要推到出二分图最大匹配 = 最小覆盖 最小覆盖:证明过程http://blog.sina.com.cn/s/blog_51cea4040100h152.html Descriptio ...
- zoj 1450 Minimal Circle 最小覆盖圆
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=450 You are to write a program to fi ...
随机推荐
- Nginx入门案例(Mac版)
Nginx(engine x)是一个轻量级.高性能的Web和反向代理服务器,也是一个IMAP.POP3和SMTP服务器,并且安装十分简单,配置文件非常简洁,启动特别容易,运行十分稳定,几乎可以做到7* ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- python+selenium自动化软件测试(第3章):unittest
3.1 unittest简介 前言(python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:92 ...
- The C++ Programming Language 学习笔记 第四章 类型和声明
1.关于main 函数中的 return 0 C99标准中,main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统).如果 main 函数的最后没有写 return ...
- Servlet和Filter的url匹配以及url-pattern详解 及 filter 循环问题的解决
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜.估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,ser ...
- 利用WHID为隔离主机建立隐秘通道
0 引言 从2014年BADUSB出现以后,USB-HID攻击就这一直被关注,且具争议.争议的焦点是USB-HID的实战效果过于“鸡肋”,无论从早期的BADUSB,还是到后来的各种USB-HID设备, ...
- 实现CA证书创建及客户端申请证书
author:JevonWei 版权声明:原创作品 CA证书的相关文件路径 openssl配置文件/etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf C ...
- Centos 6系统修复grub
author:JevonWei 版权声明:原创作品 错误界面如下时,应该是grub的stage数据有缺失,应该从新安装grub GRUB引导的stage1阶段损坏,系统启动会直接进入光盘引导界面,st ...
- 重写equals就必须重写hashCode的原理分析
因为最近在整理Java集合的源码, 所以今天再来谈谈这个古老的话题,因为后面讲HashMap会用到这个知识点, 所以重新梳理下. 如果不被重写(原生Object)的hashCode和equals是什么 ...
- 三、nginx实现反向代理负载均衡
1.反向代理 需求: 两个tomcat服务通过nginx反向代理 nginx服务器:192.168.101.3 tomcat1服务器:192.168.101.5 tomcat2服务器:192.168. ...