其他分享
首页 > 其他分享> > 区间交交 (我觉得题目没说清)

区间交交 (我觉得题目没说清)

作者:互联网

区间交交 

Description

刘备今年终于进入浙江传媒学院了,想当年在高中的那场数学之战真是惊心动魄。为了能够顺利借到东风,诸葛亮将两组区间放在一起。将它们共同的部分提取出来,然后向上苍祷告。于是玉皇大帝就命令风神助卧龙一臂之力了。

如今,刘备问卧龙,曰:“军师,How long 你提取出的区间?”卧龙笑而不语,羽扇一扇便说,他的学生可以告诉刘备!你可以将这两组区间相交的部分在数轴上线段的长度告诉刘备么?

Input

数据只有两行代表当年诸葛亮用来提取的两组区间。每行的第一个自然数N (0<=N<100)表示该组区间的数量,接着N对小数si,ei表示区间的开始和结束。

Output

输出区间交集的长度输出来,结果保留三位小数。

Samples

input Copy 2 1 10 14 17 3 3 7 9 15 16 18 output Copy 7.000

Hint

Sample中的结果是这样求出的:(7-3) + (10-9) + (15-14) + (17-16) = 7。

#include <stdio.h>
typedef struct{
	double a;
	double b;
}list;
list w[110];
int main()
{
	int n;
	scanf("%d",&n);
	int i;
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&w[i].a,&w[i].b);
	}
	int m;
	double x,y;
	scanf("%d",&m);
	double sum=0;
	while(m--)
	{
		scanf("%lf %lf",&x,&y);
		for(i=0;i<n;i++)
		{
			if(w[i].a<=x&&y<=w[i].b)
				sum+=y-x;
			else if(w[i].a<=x&&w[i].b<=y&&x<=w[i].b)
				sum+=w[i].b-x;
			else if(x<=w[i].a&&y<=w[i].b&&w[i].a<=y)
				sum+=y-w[i].a;
			else if(x<=w[i].a&&y>=w[i].b)
				sum+=w[i].b-w[i].a;			
		}
	}
	printf("%.3lf\n",sum);
	return 0;
}

就是以上一个区间一个个遍历过去,一共四种情况,但我想吐槽的是如果输入的区间就有交集,那上面这个方法就是错的,从的来说题目没说清,还是说默认区间就是给定的数据就是不可能相交的,加油。

标签:题目,int,交交,刘备,卧龙,没说,区间,两组
来源: https://blog.csdn.net/qq_63010655/article/details/122381506