题目大意:
给出n个数,从a到b的船只被烧毁,求出所有被烧毁的船只数量。
思路:
离散化
很明显是一道离散化的题,基本可以算是模板题了。
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int x[20001],y[20001],a[50001],n,m,sum;
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d%d",&x[i],&y[i]);
a[++m]=x[i];
a[++m]=y[i]; //记录每个点
}
sort(a+1,a+1+m); //排序
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if (a[i]>x[j]&&a[i]<=y[j]) //在范围之内
{
sum+=a[i]-a[i-1]; //记录答案
break; //退出循环
}
printf("%d\n",sum);
return 0;
}