1
2
1
1
0
题目大意: 有n个星星, 现在分别给出它们按y递增的坐标,每个星星有一个等级(该星星的等级是x坐标和y坐标都不大于该星的星星数),先要求出每个等级的星星有多少个
这个是线段树第一次写,详解请关注大神博客:
http://blog.csdn.net/ulquiorra0cifer/article/details/7769675
LANGUAGE:C
CODE:
#include<stdio.h>
#include<string.h>
#define max 33000
struct
{
int l,r,sum;
}tree[max<<2];
void build(int l,int r,int idx)
{
int mid=(l+r)>>1;//get the midle
tree[idx].sum=0;//init sum
if(l==r)//at same point
{
tree[idx].l=tree[idx].r=r;
return ;
}
tree[idx].l=l;tree[idx].r=r;
build(l,mid,idx<<1);//build left subtree
build(mid+1,r,idx<<1|1);//build(mid+1,r,idx*2+1);build right subtree
}
void add(int l,int r,int idx)
{
int mid=(tree[idx].l+tree[idx].r)>>1;
if(tree[idx].l==l&&tree[idx].r==r)//if find the segment
{
tree[idx].sum++;//current segement
return ;
}
if(l>mid)
add(l,r,idx<<1|1);//if the segement at root's right:add to the right subtree
else if(r<=mid)add(l,r,idx<<1);//if the segement at root's left:add to the left subtree
else
{
add(l,mid,idx<<1);//add to the left subtree
add(mid+1,r,idx<<1|1);//add to the right subtree
}
tree[idx].sum=tree[idx<<1|1].sum+tree[idx<<1].sum;//get sum
}
int query(int l,int r,int idx)
{
int mid=(tree[idx].l+tree[idx].r)>>1;
if(tree[idx].l==l&&tree[idx].r==r)//if find the segement,return sum;
return tree[idx].sum;
if(l>mid)
return query(l,r,idx<<1|1);//return right subtree's sum;
else if(r<=mid)
return query(l,r,idx<<1);//return left subtree's sum;
else
return query(l,mid,idx<<1)+query(mid+1,r,idx<<1|1);//return the sum of subtree's sum;
}
int main()
{
int i,n,x,y,lev[max];
while(scanf("%d",&n)!=EOF)
{
memset(lev,0,sizeof(lev));
build(0,max,1);
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
lev[query(0,x,1)]++;
add(x,x,1);
}
for(i=0;i<n;i++)
printf("%d\n",lev[i]);
}
return 0;
}
相关推荐
### POJ 2352 Stars - 树状数组与线段树实现 #### 题目背景 POJ 2352 Stars 是一道经典的算法题目,它提供了使用树状数组或线段树来解决的可能性。这两种数据结构都是为了高效处理区间查询问题而设计的。在这篇...
poj 2482 Stars in Your Window.md
### POJ 2352:星图级别分布问题解析 #### 问题描述 本问题主要涉及天文学家对星图的研究。在星图中,星星被表示为平面上的点,并且每个星星都有对应的笛卡尔坐标(X, Y)。定义一个星星的“级别”为在它左下方的...
* 静态二叉检索树:例如 poj2482、poj2352。 * 树状树组:例如 poj1195、poj3321。 * RMQ:例如 poj3264、poj3368。 * 并查集的高级应用:例如 poj1703、poj2492。 * KMP 算法:例如 poj1961、poj2406。 4. ...
2. **平衡树**:如AVL树、红黑树等(poj2482, poj2352)。 3. **并查集**:用于处理不相交集合的问题(poj1195, poj3321)。 4. **区间查询**:如RMQ问题(poj3264, poj3368)。 5. **字符串匹配**:如KMP算法(poj...
【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...
* 图的深度优先遍历和广度优先遍历:图的深度优先遍历和广度优先遍历是指遍历图的两种方式,如 poj1860、poj3259、poj1062、poj2253、poj1125、poj2240。 * 最短路径算法:最短路径算法是指计算图中两点之间的最短...
【标题】"POJ1159-Palindrome" 是北京大学在线编程平台POJ上的一道编程题目。这道题目主要考察的是字符串处理和回文判断的知识点。 【描述】"北大POJ1159-Palindrome 解题报告+AC代码" 暗示了解决这道问题的方法和...
- (poj2482, poj2352):将数据分为多个区块,提高查询效率。 3. **树套树**: - (poj1195, poj3321):将一种数据结构嵌套在另一种数据结构中。 4. **区间最大值查询**: - (poj3264, poj3368):如何快速获取...
标题“POJ3253-POJ3253-Fence Repair【STL优先队列】”指的是一个在线编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目要求参赛者使用C++编程语言解决特定的问题,并且在解决方案中...
根据给定的文件信息,我们可以总结出一份详细的IT知识训练计划,主要针对编程竞赛和算法学习,特别是聚焦于POJ(Problem Online Judge)平台上的题目训练。这份计划分为两个阶段,初级阶段和中级阶段,共计涉及了165...
【标题】"POJ2002-Squares"是一个经典的计算机编程题目,源自北京大学的在线判题系统(POJ,即PKU Online Judge)。这个题目主要涉及到算法设计和实现,尤其是数学和动态规划方面的知识。 【描述】"解题报告+AC代码...
标题中的"jihe.rar_2289_POJ 3714_poj3714_poj3714 Ra_visual c" 提到了一个压缩文件,可能包含有关编程竞赛或算法解决的资源,特别是与POJ(Problem On Judge)平台上的问题3714相关的。"Ra_visual c"可能指的是...
这些题目是针对ACM竞赛(ACM International Collegiate Programming Contest,简称ICPC)中的编程训练,POJ(Problem Set for Online Judges)是一个在线的编程竞赛平台,提供了许多算法和逻辑思维的练习题目。...
- **例题**:poj1860, poj3259, poj1062, poj2253, poj1125, poj2240 - **解释**:最短路径算法包括Dijkstra算法、Bellman-Ford算法、Floyd算法以及堆优化的Dijkstra算法等。 ##### (3) 最小生成树算法 - **例题**...
标题和描述中的“poj各种分类”主要指向的是在POJ(Peking University Online Judge)平台上,根据解题策略和算法类型对题目进行的分类。POJ作为一个知名的在线编程平台,提供了大量的算法练习题,适合从初学者到...
【标题】"POJ1837-Balance"是一个在线编程竞赛题目,源自著名的编程练习平台POJ(Programming Online Judge)。这个题目旨在测试参赛者的算法设计和实现能力,特别是处理平衡问题的技巧。 【描述】"解题报告+AC代码...
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj2528、poj2777等是线段树的题目,poj2482、poj2352等涉及平衡树,poj1195、poj3321则训练了树状数组。 5. **搜索算法的优化**:poj1699、poj3411等训练搜索技巧和剪枝方法,poj3373、poj1691则介绍了记忆化搜索。...
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告