POJ 2352 线段树

H3C-V7防火墙配置SSL VPN IP资源典型案例(华三) 阅读详情

Description

Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and not to the right of the given star. Astronomers want to know the distribution of the levels of the stars.

For example, look at the map shown on the figure above. Level of the star number 5 is equal to 3 (it's formed by three stars with a numbers 1, 2 and 4). And the levels of the stars numbered by 2 and 4 are 1. At this map there are only one star of the level 0, two stars of the level 1, one star of the level 2, and one star of the level 3.

You are to write a program that will count the amounts of the stars of each level on a g.iven map.

Input

The first line of the input file contains a number of stars N (1<=N<=15000). The following N lines describe coordinates of stars (two integers X and Y per line separated by a space, 0<=X,Y<=32000). There can be only one star at one point of the plane. Stars are listed in ascending order of Y coordinate. Stars with equal Y coordinates are listed in ascending order of X coordinate.

Output

The output should contain N lines, one number per line. The first line contains amount of stars of the level 0, the second does amount of stars of the level 1 and so on, the last line contains amount of stars of the level N-1.

Sample Input

5
1 1
5 1
7 1
3 3
5 5

Sample Output

1
2
1
1
0

Source::
#include<cstdio>
using namespace std;
#define M 70005
struct Node
{
    int l,r;
    int n;
}a[M];
int ans[M];
void build(int l,int r,int num)
{
    a[num].l=l;
    a[num].r=r;
    a[num].n=0;
    if(l<r)
    {
        build(l,(l+r)/2,num*2);
        build((l+r)/2+1,r,num*2+1);
    }
}

void insert(int l,int num)
{
    if(a[num].l==l&&a[num].r==l)
    {
        a[num].n++;
        return ;
    }
    int mid=(a[num].l+a[num].r)/2;
    if(l<=mid)
    {
        insert(l,num*2);
    }
    else
    {
        insert(l,num*2+1);
    }
    a[num].n++;
}

int find(int l,int r,int num)
{
    if(a[num].l==l&&a[num].r==r)
    {
        return a[num].n;
    }
    int mid=(a[num].l+a[num].r)/2;
    if(l>mid)
    {
        return find(l,r,num*2+1);
    }
    else if(r<=mid)
    {
        return find(l,r,num*2);
    }
    else
    {
        return find(l,mid,num*2)+find(mid+1,r,num*2+1);
    }
}
int main()
{
    int x,y,n;
    int max=32001;
    while(~scanf("%d",&n))
    {
        build(0,max,1);
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            ans[find(0,x,1)]++;
            insert(x,1);
        }
        for(int i=0;i<n;i++)
        {
            printf("%d\n",ans[i]);
        }
    }
    return 0;
}
AUTOSAR OS演示项目搭建与验证 请注意,以上代码只是一个简单的示例,用于说明AUTOSAR OS项目的搭建和验证过程。此外,AUTOSAR OS还提供了其他功能和API,如事件、消息队列和任务间通信等,可以根据实际需求进行使用。AUTOSAR OS是AUTOSAR架构中的一部分,它提供了一种可移植且可扩展的操作系统,用于管理嵌入式应用程序的任务和资源。通过以上步骤,我们成功搭建了一个基于AUTOSAR OS的演示项目,并验证了应用程序任务的执行顺序。3、打开app.c文件,并编写一个简单的应用程序,作为我们的示例任务。 阅读详情

相关推荐

FDTD仿真进阶:液晶偏振调控与双折射效应全解析

本文深入解析了在Lumerical FDTD仿真中如何对液晶材料进行偏振调控与双折射效应建模。通过单轴液晶和螺旋扭曲液晶(TN-LCD)两大实战案例,详细阐述了从各向异性材料参数设置、LC网格属性配置到偏振椭圆分析的全流程,帮助工程师精准模拟液晶的光开关行为,优化如显示器等器件的光学性能。

chair的专栏 747

poj_2352 线段树

题目大意     对于二维平面上的n个点,给出点的坐标。定义一个点A覆盖的点的个数为满足以下条件的点B的个数:点B的x &lt;= 点A的x坐标,点B的y坐标 &lt;= 点A的y坐标。     给出N个点的坐标,求出覆盖点的个数分别为0, 1, ... N-1 的点各有多少个。 题目分析     对于二维平面的点问题,可以考虑先进行行列排序,然后进行处理。对点进行排序(y从小到大,y相同,...

weixin_33825683的博客 165

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发...

9385

线段树 POJ 2352

 这里主要想区别一下线段树和点数的区别:比如区间[0,7],点数的划分如下:[0,7]->[0,3]->[4,7]->...->[0,0],[1,1],[2,2]...[7,7],叶子节点是单个的点。创建代码如下:void build(int l,int r,int root){        tree[root].l=l;        tree[root].r= r

ClearRiver 's Style 1243

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

Multisim仿真入门:单相半波可控整流电路从搭建到波形分析(附避坑指南)

本文为电力电子技术初学者提供了一份详细的Multisim仿真指南,手把手教你从零搭建单相半波可控整流电路。通过对比纯电阻、阻感负载及加入续流二极管后的波形变化,直观理解晶闸管触发、电感续流等核心原理,并附有实用的参数设置与常见问题避坑指南,帮助你将抽象理论转化为可视化的工程实践。

weixin_29208077的博客 344

POJ 2352 Stars (线段树)

URL: http://poj.org/problem?id=2352 题目大意: 给定n个点(n 思路分析: 既然y值以升序给出,那问题就简化成了: 给定一个数列a, 求a[1]至a[i-1]共有多少个数在[0, i]之间。(然后统计一下即可) 不难观察到,线段树很适合处理此类问题。 把坐标看成区间,对[0,32000]的区间建线段树,树中的num记录[l, r]区间

suncongbo's blog 378

【Tableau】解决订阅报表PDF中文显示为乱码(方框)问题

一、问题描述 在tableau server网页端报表中文字符能正常显示,但在订阅后发送到邮箱时,以图片格式呈现的内容中中文字符显示为方框。 网页端报表能正常显示中文字符: 邮件中的报表不能正常显示中文字符: 二、问题分析 网页端字符显示情况是由html编码决定的,而tableau生成图片时是通过所部署的服务器的字体文件显示字体。因此可能是由于Linux服务器缺失相关的字体文件导致网页端选择的中文字体在服务器上缺失对应的字体文件导致的。则考虑在服务器引入对应的字体文件。 三、问题解决 1、查看服务器现有

why_not_study的博客 2834

POJ 2352 线段树(单点更新)

题目Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39440 Accepted: 17129 DescriptionAstronomers often examine star maps where stars are represented by points on a plane a

仰望天空 418

数据挖掘实战-基于随机森林算法的交通事故预测模型

本实验数据集来源于Kaggle,原始数据集共有209306条,该数据集包含不同地区和时间段的交通事故详细信息。它包括各种指标,例如事故日期、天气状况、照明条件、碰撞类型、受伤人数和车辆参与情况。数据涵盖多个地点和事故类型,可全面了解交通事故及其原因。具体包括:crash_date:事故发生的日期。Traffic_control_device:所涉及的交通控制设备的类型(例如交通灯、标志)。weather_condition:事故发生时的天气状况。

m0_64336780的博客 1万+

自学 ABAP 和自学 SAP 的差别

有朋友在我的 ABAP 学习教程里留言: > 自学SAP是不是都要搭建虚拟服务器,然后自己去官网下载新版本SAP就可以吗 对于初学者,我们要搞清楚 ABAP 和 SAP 的区别。 ABAP 是一门编程语言,SAP 首先是德国软件公司的名称,也代表这家公司开发的一系列软件。SAP 公司开发的软件,我们有时也称产品,其功能能满足客户一个或者多个领域的业务需求。这些不同领域,我们也称为不同的业务模块,比如 ERP,CRM,SRM,HR 等等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6864

poj 2352(入门线段树)

// 就是求在X轴左边的星星个数吧,以前用树状数组写过#include #include #define M 32000 struct tree { int left,right,num; }a[3*M]; int sum[15010]; void bulid_tree(int l,int r,int pos) { int mid; a[pos].left=l; a[pos].r

weiwei2012start的专栏 868

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj 2352 Stars(线段树)

poj 2352 Stars(线段树)

PKU_ZZY的博客 885

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ 2352 Stars(线段树)

题目地址:POJ 2352 今天的周赛被虐了。。TAT..线段树太渣了。。得好好补补了(尽管是从昨天才開始学的。。不能算补。。。) 这题还是非常easy的。。维护信息是每个横坐标的出现的次数。 代码例如以下: #include <iostream> #include <cstdio> #include <string> #include <...

weixin_34261415的博客 102

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ 2352 Stars 线段树 单点更新 成段求和

//POJ 2352 Stars 线段树 单点更新 成段求和 /* 题意:给一系列点(按y递增,y相同时按x递增排列),level指不超过当前点的高度且不在当前点右边的点的个数 求level值分别为0,1,2,..n-1的个数 思路:由于题意已经是按顺序给的点,所以直接按x轴建树 注意x从0开始,线段树从1开始,所以x全部+1处理 */ #include #include #inc

God horses are clouds 826

poj 2352 Stars(线段树)

题目:http://poj.org/problem?id=2352 大意:一些星星有自己的优先级,优先级是x坐标和y坐标小于等于该星星坐标的星星个数 思路:由于这个题的y值是从小到大排列,所以对x建立线段树,找小于等于该星星x坐标的星星个数即可 代码: #include <iostream> #include<cstdio> #include<cs...

weixin_34009794的博客 88

POJ 2352 线段树

题意就是让求在某个点左面的星星的个数。因为y是按升序输入的,所以只需要考虑x即可。此题可以用树状数组做,也可以用线段树做。以前用树状数组做过一次,这次用线段树又做了一下。相比来说,树状数组是比较容易想的,而且也更简单。   用线段树的话,当输入一个点的横坐标x后,考虑位于x左边的点有几个即可。题目: Stars Time Limit: 1000MS   Memor

1611

POJ 2352 Stars (线段树&想法题)

http://poj.org/problem?id=2352 每读一个点(x,y),先查询区间[0,x]上有多少个点,然后把位置x上星星的数目+1 完整代码: /*470ms,696KB*/ #include #define lson l, m, rt << 1 #define rson m + 1, r, rt << 1 | 1 #define root 1, 3200

AC,∑ndless 944

poj2352_线段树

题目描述:    给出一个根据星星所处坐标位置来计算星星等级的规则。求位于每个等级的星星的个数。   解题思路:    思路一:不用线段树的话,就是直接计算x坐标序列的序号:即遍历x,计算当前x之前有几个数小于等于自己(二分找),记为当前数所处的level。最后统计一下即可。这个是个线性的查找法,所以复杂度是n平方。    思路二:用线段树的话,基本思路就是把建立区间树,然后计算的等级等于遍历x序

河洛 538

线段树基础 poj2352

题目链接题目描述有N个坐标,有一个点o坐标为(x,y) 如果有K个点坐标小于等于它的坐标(即:x0<=xx_0<=x && y0<=yy_0<=y),那么我们称点O在第K级,即level[k]。、 现要求求出level[0 ~ N-1]. 1. N < 15000, x,y < 32000, 无重复点 2. 输入的点Y按照从小到大排序,如果y相同,x从小到大排序思路 因为输入时已经排好序,

faiculty 659

poj2352(线段树)

/1.题目(theme)                                       Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 32652 Accepted: 14263 Description Astronomers often...

weixin_30675967的博客 149

poj2352

//poj2352求该点包含的点时所有比它低的点都已经加过 #include #include using namespace std; int a[32005]; int b[32005]; int tree[32001*4]; void Build(int p,int l,int r,int x) //先建立0~x范围的分支 { if(l==r){ tree[p]+

zizahn的博客 355

poj 2352 线段树

注意到题目中给的y是递增的,那个y没什么用,直接线段树维护一段1,x的区间。 #include #include #include #include #include using namespace std; const int N=32005; int record[32005]; struct node { int l,r; int n; }s[3*N+10]; void

cnh294141800的专栏 881
上一篇: POJ 2892 树状数组+二分
下一篇: POJ 3928 Ping pong 树状数组
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值