题意:

有n个数,m个排序器,每个排序器可以把区间ai到bi的数从小到大排序。这m个排序器的输出就是m个排序之后的第n个数。

现在发现有些排序器是多余的。问至少需要多少个排序器可以使得输出不变。排序器的顺序不可以改变。

思路:

这题并没有说这些排序器可以覆盖1到n的所有区间。。。

假设可以,那么就是求最少的区间可以覆盖1到n。

用dp[i]表示覆盖第i个数需要的最少区间数,dp[i] = min(dp[i],dp[s] + 1) ai <= s <= b[i]。

如果单纯的枚举ai到bi,那么时间复杂度为n*m,肯定会t。

找一个区间的最小值,可以想到线段树,所以就用线段树来优化dp,单点查询,单点更新。

注意dp[1] = 0,并且也要在线段树中进行更新。

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = 5e4 + ;
const int inf = 0x3f3f3f3f;
int a[N<<];
int modi[N<<];
int dp[N];
void pushup(int rt)
{
a[rt] = min(a[rt<<],a[rt<<|]);
}
void build(int rt,int l,int r)
{
if (l == r)
{
a[rt] = inf;
return;
}
int mid = (l + r) >> ;
build(rt << ,l,mid);
build(rt << |,mid + ,r);
pushup(rt);
}
int query(int rt,int l,int r,int L,int R)
{
if (l >= L && r <= R)
{
return a[rt];
}
int mid = (l + r) >> ;
int r1 = inf,r2 = inf;
if (L <= mid) r1 = query(rt << ,l,mid,L,R);
if (R > mid) r2 = query(rt << |,mid + ,r,L,R);
return min(r1,r2);
}
void update(int rt,int l,int r,int p,int v)
{
if (l == r)
{
a[rt] = v;
return;
}
int mid = (l + r) >> ;
if (p <= mid) update(rt << ,l,mid,p,v);
else update(rt << |,mid + ,r,p,v);
pushup(rt);
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int n,m;
memset(dp,inf,sizeof(dp));
memset(modi,-,sizeof(modi));
scanf("%d%d",&n,&m);
build(,,n);
dp[] = ;
update(,,n,,dp[]);
for (int i = ;i < m;i++)
{
int l,r;
scanf("%d%d",&l,&r);
int k = query(,,n,l,r);
dp[r] = min(dp[r],k+);
update(,,n,r,dp[r]);
}
printf("%d\n",dp[n]);
if (t) puts("");
}
return ;
}
/*
1
40 6
20 30
1 10
10 20
20 30
15 25
30 40
*/

uva 1322 Minimizing Maximizer的更多相关文章

  1. Minimizing maximizer(POJ 1769)

    原题如下: Minimizing maximizer Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 5104   Accep ...

  2. POJ1769 Minimizing maximizer(DP + 线段树)

    题目大概就是要,给一个由若干区间[Si,Ti]组成的序列,求最小长度的子序列,使这个子序列覆盖1到n这n个点. dp[i]表示从第0个到第i个区间且使用第i个区间,覆盖1到Ti所需的最少长度 对于Si ...

  3. poj 1769 Minimizing maximizer 线段树维护dp

    题目链接 给出m个区间, 按区间给出的顺序, 求出覆盖$ [1, n] $ 至少需要多少个区间. 如果先给出[10, 20], 在给出[1, 10], 那么相当于[10, 20]这一段没有被覆盖. 令 ...

  4. POJ.1769.Minimizing maximizer(线段树 DP)

    题目链接 /* 题意:有m个区间,问最少要多少个区间能覆盖[1,n] 注:区间要按原区间的顺序,不能用排序贪心做 设dp[i]表示最右端端点为i时的最小值 dp[e[i]]=min{dp[s[i]]~ ...

  5. UVA-1322 Minimizing Maximizer (DP+线段树优化)

    题目大意:给一个长度为n的区间,m条线段序列,找出这个序列的一个最短子序列,使得区间完全被覆盖. 题目分析:这道题不难想,定义状态dp(i)表示用前 i 条线段覆盖区间1~第 i 线段的右端点需要的最 ...

  6. poj1769 Minimizing maximizer

    传送门 题目大意 给你m个机器,n个数,每个机器可以给n个数的某一段排序,求最少使用几个机器,保证可以把这个n个数排好序 分析 我们可以想到dpij表示考虑前i个机器让最大的数到达点j至少需要使用多少 ...

  7. POJ 1769 Minimizing maximizer(DP+zkw线段树)

    [题目链接] http://poj.org/problem?id=1769 [题目大意] 给出一些排序器,能够将区间li到ri进行排序,排序器按一定顺序摆放 问在排序器顺序不变的情况下,一定能够将最大 ...

  8. POJ 1769 Minimizing maximizer (线段树优化dp)

    dp[i = 前i中sorter][j = 将min移动到j位置] = 最短的sorter序列. 对于sorteri只会更新它右边端点r的位置,因此可以把数组改成一维的,dp[r] = min(dp[ ...

  9. Minimizing Maximizer

    题意: 最少需要多少个区间能完全覆盖整个区间[1,n] 分析: dp[i]表示覆盖[1,i]最少需要的区间数,对于区间[a,b],dp[b]=min(dp[a...b-1])+1;用线段树来维护区间最 ...

随机推荐

  1. SQL Server 无法连接数据库

    1.打开SQL server 配置管理器-->SQL server 网络配置-->实例名的协议 2.保证SQLEXPRESS协议中的Named Pipes和 TCP/IP启用. 3.点击S ...

  2. 陌生的 metaclass(转)

    add by zhj:这是我见过的对metaclass解释最清楚的文章了,例子很好,真是一例胜千言 原文:http://wiki.jikexueyuan.com/project/explore-pyt ...

  3. MySQL加锁处理分析(转)

    add by zhj: 非常棒的一篇文章,是我见过的讲加锁最棒最详细的文章了.之前听过网易的<MySQL微专业>,里面的课程讲的也很好,但锁这块讲的跟 这篇文章相比,还是有差距的.网易&l ...

  4. zabbix server源码安装

    一.准备工作 yum -y install net-snmp-devel php-bcmath php-ctype php-xml php-xmlreader php-xmlwriter php-se ...

  5. 【JMeter】JMeter如何输出测试报告

    环境要求 1:jmeter3.0版本之后开始支持动态生成测试报表 2:jdk版本1.7以上 3:需要jmx脚本文件 基本操作 1:在你的脚本文件路径下,执行cmd命令:jmeter -n -t tes ...

  6. Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)

    在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstim ...

  7. HTTP协议与WEB框架简介

    HTTP协议与WEB框架简介 一.HTTP协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wid ...

  8. Linksys E 刷Tomato shibby

    前言 一直以来都用Linksys的无线路由器~因为它的稳定~多年来一直用Linksys自身的固件~因为之前没用它做什么特别的应用~所以一直用了下来~它的原厂固件的稳定性也从没让我操过心~近来要为用户提 ...

  9. ROS开发与常用命令

    初始化ROS的catkin工作空间:catkin_init_workspace 编译ROS的catkin工作空间:catkin_make 读取当前catkin工作空间的环境变量:source deve ...

  10. 常用笔记:PHP

    [PHP] date_default_timezone_set(PRC); //时区设置 header("Content-type: text/html; charset=utf-8&quo ...