vijos 1066 树状数组
描述
永恒和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 树状数组相关推荐
- |Vijos|树状数组|P1512 SuperBrother打鼹鼠
https://vijos.org/p/1512 一个二维树状数组,注意树状数组不能出现0,把所有坐标+1即可,求子矩阵和为 sub(x2,y2) - sub(x1-1,y2) - sub(x2, y ...
- Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...
- vijos 1448 校门外的树 树状数组
描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l. ...
- 快乐地打牢基础(4)——树状数组
在解题的过程中,我们想维护一个数组的前缀和s[i] = A[1] + A[2] +-+A[i].我们改变任意一个A[i],那么S[i]之后都会发生变化,朴素写法调整前缀和S最坏的情况需要O(n)的时间 ...
- 洛谷 P5057 [CQOI2006]简单题(树状数组)
嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...
- Color the ball(HDU1556)树状数组
每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...
- 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组
[BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...
- Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...
- poj_3067 树状数组
题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...
- hdu 1166 敌兵布阵(树状数组)
题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using names ...
最新文章
- 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了
- 经典语句,看看让心灵宁静
- 使用Hive和iReport进行大数据分析
- 如何导出久其报表所有数据_如何选择好的HR软件
- [react] props.children.map和js的map有什么区别?为什么优先选择react的?
- 前端学习(1659):前端系列实战课程之瀑布流实现思路
- ligerui_ligerTree_005_动态增加“树”节点
- python写我爱你_12个精选Python教程我的初恋故事。
- Linux| |对于UDP的学习
- win10 mysql数据库中文乱码
- Windows删除服务
- Hydra暴力破解smb协议(Windows用户名和密码)
- 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信
- 五款最佳Linux下载管理器推荐
- JavaScript中classList属性和className的区别
- 凉凉,第1个倒闭的投资项目,比呀比,海外直邮电商
- Mac 不能打开文件夹xxx 因为您没有权限查看其内容
- php对接短信宝,DEDECMS短信宝短信插件
- 大众点评超详细爬虫系列2
- Pretty girl你一定要会管理自己的身体