题目描述:

有一段长度为n(1<=n<=1000000)的数列,数列中的数字从左至右从1到n编号。初始时数列中的数字都是0。
接下来我们会对其进行m(1<=m<=100000)次操作,每次操作都会将区间[l,r]内的所有数字都变为一个特定的数字,并且每次操作这个特定的数字都不相同。
我们可以简单的认为,第一次操作时将给定区间内的数字都变为1,第二次将给定区间内数字都变为2,第三次变为3,以此类推。
在经过m次操作完成后,要求输出该数列中,拥有相同正整数(不包括0)的最长连续区间长度。
若n = 5,m = 3,原数列00000
第一次操作区间[1,3],
数列变为11100
第二次操作区间[3,4],
数列变为11220
第三次操作区间[3,5]
数列变为11333
则最长连续区间为[3,5]拥有共同正整数3,故输出其长度3。

输入:

输入包含多组测试数据,每组测试数据第一行为两个整数n,m。
接下去m行,每行两个整数l,r,表示该次操作区间为[l,r]。(1<=l<=r<=n)

输出:

对于每组测试数据输出为一个整数,表示拥有相同正整数(不包括0)的最长连续区间长度。

样例输入:
5 3
1 3
3 4
3 5
5 2
1 3
1 5
样例输出:
3
5 如果从前往后操作,费事费力。
因为保存的总是最后的结果,所以我们可以从后向前操作。
前面的操作只可以修改数列中为0的位。 为节省时间,用一个next数组记录每一位右侧第一位为0的位置
代码如下
 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <iostream>
#include <queue> using namespace std;
typedef pair<int, int> Opr;
Opr op[];
int num[];
int nextm[]; int main() {
int n, m;
while (scanf("%d %d", &n, &m) != EOF) {
memset(num, , sizeof(num));
for (int i = ; i <= n; i++) {
nextm[i] = i + ;
}
for (int i = ; i <= m; i++) {
scanf("%d %d", &op[i].first, &op[i].second);
}
for (int i = m; i > ; i--) {
int from = op[i].first, to = op[i].second;
for (int j = from; j <= to;) {
if (num[j] == ) {
num[j] = i;
}
int tmp = nextm[j];
nextm[j] = nextm[to];
j = tmp;
}
} /*for (int i = 1; i <= n; i++) {
printf("%d ", num[i]);
}
puts("");*/
int ans = ;
int tmp = ;
for (int i = ; i <= n+; i++) {
if (num[i] == num[i - ] && num[i] != ) {
tmp++;
}
else {
if (ans < tmp) {
ans = tmp;
}
tmp = ;
}
}
printf("%d\n", ans);
}
return ;
}

九度oj 题目1496:数列区间的更多相关文章

  1. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  2. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  4. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  5. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  6. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  7. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  8. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  9. 九度OJ题目1003:A+B

    while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...

随机推荐

  1. sql问题:备份集中的数据库备份与现有的 '办公系统' 数据库不同

    解决方法:把备份的数据库从原有的地方先分离,再拷贝一份,在需要还原的服务器上附加到数据库中,在根数据库上点击“还原数据库”,选择需要还原的数据库名称,以及还原的bak备份文件,在选择“选项”,勾选上“ ...

  2. 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型

    mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...

  3. 清理winsxs文件夹(系统更新文件)的第三方工具

    工具名称(第三方): Windows Update Clean Tool 下载地址: http://www.xiazaiba.com/html/24145.html http://dx5.xiazai ...

  4. VC 对话框设置背景颜色和图片

    改变背景颜色,有两种方法: 1.在app的初始化函数中调用:void SetDialogBkColor( COLORREF clrCtlBk = RGB(192, 192, 192), COLORRE ...

  5. UVA 12673 Erratic Expansion 奇怪的气球膨胀 (递推)

    不难发现,每过一个小时,除了右下方的气球全都是蓝色以外,其他都和上一个小时的气球是一样的,所以是可以递推的.然后定义一类似个前缀和的东西f(k,i)表示k小时之后上面i行的红气球数.预处理出k小时的红 ...

  6. uoj#300.【CTSC2017】吉夫特

    题面:http://uoj.ac/problem/300 一道大水题,然而我并不知道$lucas$定理的推论.. $\binom{n}{m}$为奇数的充要条件是$n&m=n$.那么我们对于每个 ...

  7. 2018.4.13 用java配置/生成Xml文件 结合IO流知识点

    自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7; impor ...

  8. Spring boot 集成ActiveMQ(包含双向队列实现)

    集百家之长,成一家之言.  1. 下载ActiveMQ https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.9/apache-activ ...

  9. Nginx: ubuntu系统上查找nginx.conf配置文件的路径

    问题描述:在ubuntu系统上,找到nginx.conf文件的位置. 解决方法:在终端窗口中,输入命令:nginx -t 回显中就可以看到nginx.conf文件的路径了. 参考:https://bl ...

  10. Java 练习:字符串反转

    package com.swift; public class String_Reverse_Test { public static void main(String[] args) { /* * ...