zoukankan      html  css  js  c++  java
  • 线段树(假)练习题一(学校OJ的题)

    Description

    桌子上零散地放着若干个盒子,桌子的后方是一堵墙。如右图所示。现在从桌子的前方射来一束平行光, 把盒子的影子投射到了墙上。问影子的总宽度是多少?

    在这里插入图片描述

    Sample Input

    20 //桌面总宽度
    4 //盒子数量
    1 5
    3 8
    7 10
    13 19

    Sample Output

    15

    Hint
    数据范围
    1<=n<=100000,1<=m<=100000,保证坐标范围为[1,n].
    .
    .
    .
    .
    .
    分析
    此题本该为线段树,却因数据过水可用离散化做
    将点映射到数轴上,接着判断累加即可
    .
    .
    .
    .
    .
    程序:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,x1[100001],y1[100001],x[200001];
    
    int main()
    {
    	scanf("%d",&m);
    	scanf("%d",&n);
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%d%d",&x1[i],&y1[i]);
    		x[i*2-1]=x1[i];
    		x[i*2]=y1[i];
    	}
    	sort(x+1,x+2*n+1);
    	long long ans=0;
    	for (int i=2;i<=2*n;i++)
    	{
    		int bz=0;
    		for (int j=1;j<=n;j++)
    			if (x[i]<=y1[j]&&x[i-1]>=x1[j])
    			{
    				bz=1;
    				ans+=x[i]-x[i-1];
    				break;
    			}
    	}
    	printf("%lld",ans);
    	return 0;
    }
    
  • 相关阅读:
    JAVA的向上转型 和 向下转型
    Mobx 常用函数整理
    HTTP错误代码对应
    D3官网上的力导图
    用D3画简单的力导图
    nodejs 爬图片
    nodejs 爬热搜
    canvas 图片旋转 导出下载
    canvas 电子签名
    canvas 音乐跳动效果
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10292811.html
Copyright © 2011-2022 走看看