SSL·线段树练习题一【离散化】

线段树练习题一 SSL 2644

    • Description--
    • Input--
    • Output--
    • Sample Input--
    • Sample Output--
    • 说明--
    • 代码--

Description–

桌子上零散地放着若干个盒子,桌子的后方是一堵墙。如右图所示。现在从桌子的前方射来一束平行光, 把盒子的影子投射到了墙上。问影子的总宽度是多少? (俯视图)
SSL·线段树练习题一【离散化】_第1张图片


Input–

第1行:桌面总宽度n
第2行:盒子数量m
第3 ~ m+2行:盒子的左端,盒子的右端

Output–

一个整数ans


Sample Input–

20
4
1 5
3 8
7 10
13 19

Sample Output–

15

说明–

1<=n<=100000,1<=m<=100000,保证坐标范围为[1,n].


代码–

#include
#include
#include

using namespace std;

int n, m, ans, a[200005], x[100005], y[100005];
 
int main()
{
	scanf("%d%d", &n,&m);
	for (int i = 1; i <= m; ++i)
	  scanf("%d%d", &x[i],&y[i]), a[i * 2 - 1] = x[i], a[i * 2] = y[i];
	sort(a + 1, a + 2 * m + 1);
	for (int i = 1; i <= 2 * m; ++i)
	  for (int j = 1; j <= m; ++j)
	  	if (a[i] > x[j] && a[i] <= y[j])
		{
			ans += a[i] - a[i - 1];
			break;
		}
	printf("%d", ans);
	
	return 0;
}

你可能感兴趣的:(离散化)