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

区间交交 

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;
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值