题目

**Problem Description
Stone 将一个序列中 m 个区间的和命名为 txl 数(区间重叠部分只取一次)。
现在,Stone 从 QAQ 的桌子上获得了一个序列,他想知道这个序列的 txl 数是多少。
Input
输入数据有多组(数据组数不超过 50),到 EOF 结束。
每组数据第一行为两个数 n, m (1 <= n <= 10^5, 1 <= m <= 1000),分别代表序列的长度和区间的个数。
第二行为 n 个数代表该序列,(1 <= a[i] <= 10^7);接下来 m 行每行两个数 l, r (1 <= l <= r <= n),代表区间 [l, r]。
Output
对于每组数据,输出一行,表示该序列的 txl 数。
Example Input
10 3
1 2 3 4 5 6 7 8 9 10
1 3
2 4
3 5
Example Output
15

题目的数据量非常大,如果用标记数组for循环暴力做的话会超时
我的做法是:用结构体存起来所有的区间,按区间的左边界从小到大排序
再设一个单独的变量 l, r,用来存一个连续区间的左右边界

一、先让l,r等于结构体里面的第一个元素的左边界和右边界,然后到后面的元素里搜索
二、后面的元素有两种情况:
1. 后面元素的左边界小于等于单独的变量r 也就是说后面的元素和单独的l、r区间是连续的,不是断开的,把这两个区间合并。然后查找在后面一个元素是否和l、r这个区间连续。
2. 后面元素的左边界大于单独的比昂两r 也就是说后面的元素和单独的l、r区间是不连续的,求出l、r这个区间的元素和。

这样每一个l、r区间是能组成连续区间的 几个结构体里的 区间的 并区间。把结构体遍历完后,即可求出答案。

Ps:注意变量是否会爆出来,在适当的地方用long long类型

最后贴上我的代码(f1和f2是快排函数)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct interval
{int r, l;
}b[11234], t;void f1(int, int);
int f2(int, int);int main()
{int i, n, m, le, ri;long long sum, a[112345];while(~scanf("%d %df", &n, &m)){a[0] = 0;sum = 0;for(i=1; i<=n; i++){scanf("%lld", &a[i]);a[i] += a[i-1];}for(i=1; i<=m; i++)scanf("%d %d", &b[i].l, &b[i].r);f1(1, m);
//        for(i=1; i<=m; i++)
//            printf("%d %d\n", b[i].l, b[i].r);i = 1;while(i <= m){le = b[i].l;ri = b[i].r;i ++;while(i <= m && ri >= b[i].l){ri = b[i].r > ri ? b[i].r : ri;i ++;}
//            printf("l:%d r:%d\n", le, ri);sum += a[ri] - a[le-1];}printf("%lld\n", sum);}return 0;
}
void f1(int left, int right)
{int mid;if(left < right){mid = f2(left, right);f1(left, mid-1);f1(mid+1, right);}
}
int f2(int left, int right)
{t = b[left];while(left < right){while(left < right && b[right].l >= t.l)right --;b[left] = b[right];while(left < right && b[left].l <= t.l)left ++;b[right] = b[left];}b[left] = t;return left;
}

题解--Stone的txl数相关推荐

  1. Stone的txl数

    Stone的txl数 Time Limit: 1000MS  Memory Limit: 65536KB Problem Description Stone 将一个序列中 m 个区间的和命名为 txl ...

  2. LeetCode算法题解 414-第三大的数

    题目描述 题解: 这道题如果不看时间复杂度那是挺容易的,一个排序就解决了,但是限制到O(n)还是要点方法才能解出来的: 方法1: 如果元素的个数<=2,直接返回最大的值即可. 如果元素的个数&g ...

  3. Codeforces Round #665 (Div. 2) 题解( 小学奥数专场 )

    目录 A.Distance and Axis(简单高中数学应用题) B.Ternary Sequence(分类讨论) C.Mere Array(GCD的性质) D.Maximum Distribute ...

  4. leetcode题解279-完全平方数

    问题描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 给你一个整数 n ,返回和为 n 的完全平方数的 最少 ...

  5. hdu-3625 Examining the Rooms(斯特灵数第一类)

    http://acm.hdu.edu.cn/showproblem.php?pid=3625 /**************************************************** ...

  6. 卡特兰数 HDU2067 HDU4165 HDU1134

    题目链接:https://vjudge.net/problem/HDU-2067 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others)    Memory Limi ...

  7. 三个数互质 java_LeetCode 5198. 丑数 III(Java)容斥原理和二分查找

    请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 ...

  8. 【PTA乙级】【1096 大美数 (15 分)】

    2022年3月6日22:23:47 文章目录 2022年3月6日22:23:47 1096 大美数 (15 分) 1.[题目描述] 2.[题解] 1096 大美数 (15 分) 1.[题目描述] 题目 ...

  9. 第十届蓝桥杯省赛题解+代码

    文章目录 组队(5分)(暴力) 年号字符(5分) 题解 AC 数列求值(10分)(递推) 题解 AC 数的分解(10分)(暴力) 题解 AC 迷宫(15分)(BFS) 题解 AC代码 特别数的和(15 ...

最新文章

  1. 第十、十一周项目一-点-圆-圆柱类族的设计(1)
  2. 我的第一份工作 (2007.2.28--2008.2.28) 上海三高计算机中心有限公司
  3. Oracle数据库案例整理-Oracle系统执行时故障-Shared Pool内存不足导致数据库响应缓慢...
  4. Portal-Basic Java Web 应用开发框架:应用篇(十四) —— 异步 Action
  5. JAVA入门级教学之(classpath的配置)
  6. webservice 实现与his系统对接_[Share] EDI 及其他常见系统对接技术
  7. OpenCV计算机视觉实战(Python版)_006边缘检测
  8. ThoughtWorks现代企业架构框架白皮书 笔记
  9. Linux安装nat123步骤
  10. c# redies 安装 和使用
  11. 谷歌地球网页版_谷歌地球:Google Earth 专业版
  12. 什么是NDK开发(一)
  13. c语言条件语句程序实例,c语言if(c语言if语句例子)
  14. OSChina 周三乱弹 ——你是有多寂寞啊,看光头强都……
  15. [#32;] 在wordpress [the_excerpt()] 函数执行的妙用
  16. blender动作_Blender实现小人行走
  17. 如何在Web of Science上免费下载文献
  18. Android Gatekeeper
  19. 看完就明白/dev/sda、/dev/hda是什么了
  20. 《人性的弱点》读书笔记

热门文章

  1. Makefile中的make命令使用(一)
  2. 苹果数据线不能充电_小米讽刺苹果取消充电器,网友翻旧账打脸,始作俑者竟是雷军|充电器|数据线|手机...
  3. iOS 关于iOS12.2WKWebView加载网页滚动卡顿问题
  4. php滚动加载分页,jQuery scroll事件实现监控滚动条分页实例详解
  5. 装饰器设计模式--快餐店案例
  6. 一款轻量级的文本编辑器:FSNotes for Mac
  7. Nodejs+php+puppeteer 实现web手机端录屏(bull+cluster)
  8. 自动化无人零售店监管系统开发
  9. 上传服务器 验证码不显示不出来,部署以后 验证码不显示
  10. 苹果发布iOS 14.2正式版