博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度oj 题目1496:数列区间
阅读量:4946 次
发布时间:2019-06-11

本文共 1775 字,大约阅读时间需要 5 分钟。

题目描述:

有一段长度为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 31 33 43 55 21 31 5
样例输出:
35 如果从前往后操作,费事费力。 因为保存的总是最后的结果,所以我们可以从后向前操作。 前面的操作只可以修改数列中为0的位。 为节省时间,用一个next数组记录每一位右侧第一位为0的位置 代码如下
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 using namespace std; 9 typedef pair
Opr;10 Opr op[100005];11 int num[1000006];12 int nextm[1000006];13 14 int main() {15 int n, m;16 while (scanf("%d %d", &n, &m) != EOF) {17 memset(num, 0, sizeof(num));18 for (int i = 1; i <= n; i++) {19 nextm[i] = i + 1;20 }21 for (int i = 1; i <= m; i++) {22 scanf("%d %d", &op[i].first, &op[i].second);23 }24 for (int i = m; i > 0; i--) {25 int from = op[i].first, to = op[i].second;26 for (int j = from; j <= to;) {27 if (num[j] == 0) {28 num[j] = i;29 }30 int tmp = nextm[j];31 nextm[j] = nextm[to];32 j = tmp;33 }34 }35 36 /*for (int i = 1; i <= n; i++) {37 printf("%d ", num[i]);38 }39 puts("");*/40 int ans = 0;41 int tmp = 1;42 for (int i = 2; i <= n+1; i++) {43 if (num[i] == num[i - 1] && num[i] != 0) {44 tmp++;45 }46 else {47 if (ans < tmp) {48 ans = tmp;49 }50 tmp = 1;51 }52 }53 printf("%d\n", ans);54 }55 return 0;56 }

 

转载于:https://www.cnblogs.com/jasonJie/p/5877004.html

你可能感兴趣的文章
关于前端 的自适应
查看>>
Python类 多态
查看>>
解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题
查看>>
自定义CCNode
查看>>
纪中集训 Day 6
查看>>
Vim编辑器与Shell命令脚本
查看>>
Tomcat Java SSL
查看>>
多线程中使用CheckForIllegalCrossThreadCalls = false访问窗口
查看>>
xlrd和xlwd模块
查看>>
Stream、FileStream、MemoryStream的区别
查看>>
Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强...
查看>>
hive数据库的一些应用
查看>>
High Availability手册(3): 配置
查看>>
【bzoj 4326】【codevs 4632】【UOJ #150】[NOIP 2015]运输计划(dfs+lca+二分答案+差分)...
查看>>
【bzoj 1295】[SCOI2009]最长距离(spfa)
查看>>
【洛谷】P1320 压缩技术(续集版)(暴力)
查看>>
nfs+drbd+keepalived 高可用的实现
查看>>
HttpClient
查看>>
【实践】配置服务器网络环境思路
查看>>
数组重排
查看>>