时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 黄金 Gold
题目描述 Description

Smart和Sarah正在玩一个即时战略游戏。

Smart在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限,但是,战壕有一个弱点:就是只能攻击它的左下方,说白了就是横、纵坐标都不大于它的点。这样,Sarah就可以从别的地方进攻摧毁战壕,从而消灭Smart的部队。

战壕都有一个保护范围,同它的攻击范围一样,它可以保护处在它左下方的战壕。所有处于它保护范围的战壕都叫做它的保护对象。这样,Sarah就必须找到Smart的战壕中保护对象最多的战壕,从而优先消灭它。

现在,由于Sarah没有时间来计算,所以拜托你来完成这个任务:给出这n个战壕的坐标(xi、yi),要你求出保护对象个数为0,1,2……n-1的战壕的个数。

输入描述 Input Description

第一行,一个正整数n(1≤n≤5000)

接下来n行,每行两个数xi,yi,代表第i个点的坐标(1≤xi,yi≤32767)注意:可能包含多重战壕的情况(即有数个点在同一坐标)。

输出描述 Output Description

输出n行,分别代表保护对象有0,1,2……n-1个的战壕个数。

样例输入 Sample Input

5

1 1

5 1

7 1

3 3

5 5

样例输出 Sample Output

1

2

1

1

0

数据范围及提示 Data Size & Hint

时间限制

1s

树状数组

屠龙宝刀点击就送

#include <algorithm>
#include <cstdio>
#define N 50005 struct node
{
int x,y;
bool operator<(node a)const
{
if(x!=a.x) return x<a.x;
else return y<a.y;
}
}zh[N];
using namespace std;
int n,tag[N],ans[N];
inline int lowbit(int x) {return x&(-x);}
inline int ask(int x)
{
int ret=;
for(;x;x-=lowbit(x)) ret+=tag[x];
return ret;
}
void modify(int x,int y)
{
for(;x<=;x+=lowbit(x))
tag[x]+=y;
}
int main(int argc,char *argv[])
{
scanf("%d",&n);
for(int i=;i<=n;++i) scanf("%d%d",&zh[i].x,&zh[i].y);
sort(zh+,zh++n);
for(int i=;i<=n;++i)
{
ans[ask(zh[i].y)]++;
modify(zh[i].y,);
}
for(int i=;i<n;++i) printf("%d\n",ans[i]);
return ;
}

codevs 2620 战壕的更多相关文章

  1. codevs 3289 花匠

    题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...

  2. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  3. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  4. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  5. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  6. codevs 1228 苹果树 树链剖分讲解

    题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...

  7. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  8. codevs 1052 地鼠游戏

    1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...

  9. codevs 2830 蓬莱山辉夜

    2830 蓬莱山辉夜 http://codevs.cn/problem/2830/ 题目描述 Description 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑, ...

随机推荐

  1. Raising Modulo Numbers(ZOJ 2150)

    这题其实就是快速求一个高次幂的模. 这是题目的答案 #include<iostream> #include<cmath> using namespace std; ]; ]; ...

  2. Java中Object类的公有方法

    HashCode();wait();notify();equals();getClass();toString();clone();finalize(); 这里只是简单介绍一下其中的几个函数: Has ...

  3. 求组合数 C(n,m)

    下面内容转自: http://blog.csdn.net/zengaming/article/details/63681754 一.求解C(n, m) 公式一: 公式二: 公式二可以这么理解,从n个物 ...

  4. vue使用webpack压缩后体积过大要怎么优化

    vue使用webPack压缩后存储过大,怎么优化 在生产环境去除developtool选项 在webpack.config.js中设置的developtool选项,仅适用于开发环境,这样会造成打包成的 ...

  5. springBoot2.0 配置 mybatis+mybatisPlus+redis

    一.Idea新建springBoot项目 next到完成,然后修改使用自己的maven 等待下载包 二.pom.xml文件 <?xml version="1.0" encod ...

  6. Java Script 第一章.

    什么是Java script? JavaScript是一种基于对象的脚本语言,用于开发基于客户端和基于服务器的Internet应用程序 JavaScript是一种脚本语言(脚本语言是一种轻量级的编程语 ...

  7. 兼容IE的login表单巧妙写法

    利用label来写: HTML: <div class="loginwrap"> <label for="phonenumber" class ...

  8. Duff and Meat(贪心)

    Duff is addicted to meat! Malek wants to keep her happy for n days. In order to be happy in i-th day ...

  9. F. Relatively Prime Powers (求([2,n],内不是次方的数量)

    题目:经过提炼后, 题目的意思就是问[2,n] 内,不是次方数的数量 ,: 思路: 答案就是 原理是利用容斥,注意n开i次根是向下取整(这题巨卡精度) 这是大神的思路 ,, 我还没有理解, 先放着,等 ...

  10. CentOS 7: ping Name or service not known

    解决方法 cd到/etc/sysconfig/network-scripts/ 修改ifcfg-*(*代表的内容可通过ifconfig查看)中的ONBOOT=yes reboot ifcfg-ens3 ...