//重叠区间数
#define N 2

typedef struct arrange {
	int x;
	int y;
} Arrange;

//先按左边界排序,若相等再按右边界排序(升序)
int cmp(const void* a1, const void* a2) {
	if ((*(const Arrange*) a1).x == (*(const Arrange*) a2).x) {
		return (*(const Arrange*) a1).y - (*(const Arrange*) a2).y;
	} else {
		return (*(const Arrange*) a1).x - (*(const Arrange*) a2).x;
	}
}

void printArranges(Arrange* arranges, int len) {
	for (int i = 0; i < len; ++i) {
		cout << "x: " << arranges[i].x << " y: " << arranges[i].y << endl;
	}
}

//最大重叠区间大小
int findMaxOverlap(Arrange* arr, int len, Arrange* result, int resultSize) {
	qsort(arr, len, sizeof(Arrange), cmp);

	Arrange pivot = arr[0];
	int maxOverlap = 0;

	for (int i = 1; i < len; ++i) {
		//区间不重叠
		if (pivot.y < arr[i].x) {
			pivot = arr[i];
			continue;
		} else {
			//arr[i]包含在pivot内
			if (pivot.y >= arr[i].y) {
				if (maxOverlap < arr[i].y - arr[i].x) {
					maxOverlap = arr[i].y - arr[i].x;
					result[0] = pivot;
					result[1] = arr[i];
				}
			} else {
				if (maxOverlap <= pivot.y - arr[i].x) {
					maxOverlap = pivot.y - arr[i].x;
					result[0] = pivot;
					result[1] = arr[i];
				}
				pivot = arr[i];
			}
		}
	}
	return maxOverlap + 1;
}

在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。的更多相关文章

  1. 网络流24题:最长 k 可重区间集问题题解

    最长 k 可重区间集问题题解: 突然想起这个锅还没补,于是来把这里补一下qwq. 1.题意简述: 有\(n\)个开区间,这\(n\)个开区间组成了一个直线\(L\),要求选择一些区间,使得在直线\(L ...

  2. 51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题

    51nod 1563 坐标轴上的最大团 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 |xi−xj|≥wi+wj ,那么 ...

  3. 【51nod1563】坐标轴上的最大团 贪心

    题面 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 \(|xi−xj|≥wi+wj\) ,那么就给第i个点和第j个点之间 ...

  4. (luogu P3358)最长k可重区间集问题 [TPLY]

    最长k可重区间集问题 题目链接 https://www.luogu.org/problemnew/show/3358 做法 所有点向下一个点连容量为k费用为0的边 l和r连容量为1费用为区间长度的边 ...

  5. 【网络流24题】最长k可重区间集(费用流)

    [网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\ ...

  6. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. 网络流 P3358 最长k可重区间集问题

    P3358 最长k可重区间集问题 题目描述 对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k可重区间集的长度. 输入输出格式 输入格式: 的第 1 行有 2 个正整数 n和 k, ...

  8. LibreOJ #6014. 「网络流 24 题」最长 k 可重区间集

    #6014. 「网络流 24 题」最长 k 可重区间集 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   ...

  9. 【刷题】LOJ 6014 「网络流 24 题」最长 k 可重区间集

    题目描述 给定实直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取出开区间集合 \(S \subseteq ...

随机推荐

  1. [LeetCode] Candy Crush 糖果消消乐

    This question is about implementing a basic elimination algorithm for Candy Crush. Given a 2D intege ...

  2. [LeetCode] Exclusive Time of Functions 函数的独家时间

    Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU, find ...

  3. 深入理解事件(Event)

    前言 在前一篇文章中讲到了Event 发布与订阅(一) 里面用到了事件来实现一些发布与订阅,当时对事件及其委托理解的还不是太深入,可能在使用上有点捉急.这篇来好好讲讲事件,以及通过一些小DEMO来加深 ...

  4. 计蒜客NOIP模拟赛(3) D1T2 信息传递

    一个数据包在一个无向网络中传递.在时刻0,该数据包将依照特定的概率随机抵达网络中的某个节点.网络可以看做一张完全带权无向图,包含N个节点,若t时刻数据包在节点i,则在t+1时刻,数据包被传递到节点j的 ...

  5. [HNOI2012]永无乡

    题目描述 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达 ...

  6. Passward

    问题 A: Passward 时间限制: 1 Sec  内存限制: 512 MB 题目描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并 ...

  7. CSAPP-过程调用,数据存储,缓冲区溢出

    程序编译: 1.预处理阶段: 1.文件包含:将#include扩展成文件正文 2.条件编译:根据#if和#ifdef将程序的某部分排除或者包含 3.宏展开:将出现宏引用的地方展开成相应的宏 2.编译阶 ...

  8. 【HNOI2002】【矩阵快速幂】公交车路线

    仍然是学弟出的题目的原题@lher 学弟将题目改成了多组数据,n在ll范围内,所以我就只讲提高版的做法. 链接:https://www.luogu.org/problem/show?pid=2233 ...

  9. Codeforces Round #407 (Div. 1)

    人傻不会B 写了C正解结果因为数组开小最后RE了 疯狂掉分 AC:A Rank:392 Rating: 2191-92->2099 A. Functions again 题目大意:给定一个长度为 ...

  10. Linux命令-关机命令详解

    关机命令:1.halt 立刻关机 2.poweroff 立刻关机 3.shutdown -h now 立刻关机(root用户使用) 4.shutdown -h 10 10分钟后自动关机 如果是通过sh ...