描述

永恒和mx正在玩一个即时战略游戏,名字嘛~~恕本人记性不好,忘了-_-b。
mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒ftING…@_@)。
但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT)。这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队。
战壕都有一个保护范围,同它的攻击范围一样,它可以保护处在它左下方的战壕。所有处于它保护范围的战壕都叫做它的保护对象。这样,永恒就必须找到mx的战壕中保护对象最多的点,从而优先消灭它。
现在,由于永恒没有时间来计算,所以拜托你来完成这个任务:
给出这n个战壕的坐标xi、yi,要你求出保护对象个数为0,1,2……n-1的战壕的个数。
格式

输入格式

第一行,一个正整数n(1<=n<=15000)
接下来n行,每行两个数xi,yi,代表第i个点的坐标
(1<=xi,yi<=32000)
注意:可能包含多重战壕的情况(即有数个点在同一坐标)
输出格式

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

样例输入1

5
1 1
5 1
7 1
3 3
5 5
样例输出1

1
2
1
1
0
限制

各点2s(算是宽限吧^_^)
来源

URAL1028战役版

分析:
日常跑排序跑一遍树状数组

Code

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<queue>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
#define lowbit(x) x&(-x)
#define M 32000
const int MAXN=32000+10,MAXM=15000+10;
int tr[MAXN],n,ans[MAXM];struct Node{int x,y;
}a[MAXM];bool cmp (const Node &a,const Node &b){if(a.x==b.x) return a.y<b.y;return a.x<b.x;
}void add(int pos,int val){while(pos<=M){tr[pos]+=val;pos+=lowbit(pos);}
}int sum(int pos){int tot=0;while(pos>0){tot+=tr[pos];pos-=lowbit(pos);}return tot;
}int main(){scanf("%d",&n);memset(ans,0,sizeof(ans));memset(tr,0,sizeof(tr));fo(i,1,n) scanf("%d%d",&a[i].x,&a[i].y);sort(a+1,a+1+n,cmp);fo(i,1,n){int k=sum(a[i].y);ans[k]++;add(a[i].y,1);}fo(i,0,n-1) printf("%d\n",ans[i]);return 0;
}

vijos 1066 树状数组相关推荐

  1. |Vijos|树状数组|P1512 SuperBrother打鼹鼠

    https://vijos.org/p/1512 一个二维树状数组,注意树状数组不能出现0,把所有坐标+1即可,求子矩阵和为 sub(x2,y2) - sub(x1-1,y2) - sub(x2, y ...

  2. Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】

    校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...

  3. vijos 1448 校门外的树 树状数组

    描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l. ...

  4. 快乐地打牢基础(4)——树状数组

    在解题的过程中,我们想维护一个数组的前缀和s[i] = A[1] + A[2] +-+A[i].我们改变任意一个A[i],那么S[i]之后都会发生变化,朴素写法调整前缀和S最坏的情况需要O(n)的时间 ...

  5. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  6. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  7. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  8. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  9. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  10. hdu 1166 敌兵布阵(树状数组)

    题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using names ...

最新文章

  1. 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了
  2. 经典语句,看看让心灵宁静
  3. 使用Hive和iReport进行大数据分析
  4. 如何导出久其报表所有数据_如何选择好的HR软件
  5. [react] props.children.map和js的map有什么区别?为什么优先选择react的?
  6. 前端学习(1659):前端系列实战课程之瀑布流实现思路
  7. ligerui_ligerTree_005_动态增加“树”节点
  8. python写我爱你_12个精选Python教程我的初恋故事。
  9. Linux| |对于UDP的学习
  10. win10 mysql数据库中文乱码
  11. Windows删除服务
  12. Hydra暴力破解smb协议(Windows用户名和密码)
  13. 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信
  14. 五款最佳Linux下载管理器推荐
  15. JavaScript中classList属性和className的区别
  16. 凉凉,第1个倒闭的投资项目,比呀比,海外直邮电商
  17. Mac 不能打开文件夹xxx 因为您没有权限查看其内容
  18. php对接短信宝,DEDECMS短信宝短信插件
  19. 大众点评超详细爬虫系列2
  20. Pretty girl你一定要会管理自己的身体

热门文章

  1. 电子证件照尺寸怎样裁剪?怎么把照片裁剪成2寸?
  2. 软件测试用例最简单最常见的模板和案例(QQ登陆,手机号,126邮箱)
  3. netstat 的10个基本用法
  4. 各纬度气候分布图_气候分布图有纬度
  5. Swift -- AVPlayerViewController播放本地视频并且通知重复播放
  6. java做绿色数字雨_数字雨
  7. 好看的alert弹窗或样式弹窗
  8. MATLAB小波分析工具箱的使用
  9. PS学习笔记--去掉图片上不想要的部分
  10. 无pygame写一个python贪吃蛇