UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】
题目链接:UESTC 1584 Washi与Sonochi的约定
题意:在二维平面上,某个点的ranked被定义为x坐标不大于其x坐标,且y坐标不大于其y坐标的怪物的数量。(不含其自身),要求输出n行,每行一个整数,分别代表rank为0~n^1的怪物数量。
分析:树状数组+排序,其实就是道树状数组的裸题,和poj2352是同题,套个板子就可以过
思路就是把所有的坐标读入之后,按照x为第优先级,y为第二优先级,都是从小到大排序,只从从0~n-1扫一遍,此时(i时)树状数组里的点的x值,
都不比val[i].x大,//这题所有坐标都不同。所以get(val[i].y)即可得到,所有x坐标不大于vali,且y坐标小于vali的坐标(点)的个数,
然后把val[i].y插入到树状数组里。扫一遍即可得到所有答案,复杂度 O(nlogn)!
下面给出AC代码:
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- const int MAXN=;
- struct p
- {
- int x, y;
- }val[MAXN];
- inline int read()
- {
- int x=,f=;
- char ch=getchar();
- while(ch<''||ch>'')
- {
- if(ch=='-')
- f=-;
- ch=getchar();
- }
- while(ch>=''&&ch<='')
- {
- x=x*+ch-'';
- ch=getchar();
- }
- return x*f;
- }
- inline void write(int x)
- {
- if(x<)
- {
- putchar('-');
- x=-x;
- }
- if(x>)
- {
- write(x/);
- }
- putchar(x%+'');
- }
- inline bool cmp(const p &a,const p &b)
- {
- if(a.x!=b.x) return a.x<b.x;
- else return a.y<b.y;
- }
- int ranked[MAXN<<];
- int Tree[MAXN<<];
- inline int lowbit(int x)
- {
- return (x&-x);
- }
- inline void add(int x,int value)
- {
- for(int i=x;i<MAXN;i+=lowbit(i))
- Tree[i]+=value;
- }
- inline int get(int x)
- {
- int res=;
- for(int i=x;i;i-=lowbit(i))
- {
- res+=Tree[i];
- }
- return res;
- }
- int main()
- {
- int n;
- n=read();
- for(int i=;i<n;i++)
- {
- scanf("%d%d",&val[i].x,&val[i].y);
- }
- sort(val,val+n,cmp);
- for(int i=;i<n;i++)
- {
- ranked[get(val[i].y)]++;
- add(val[i].y, );
- }
- for(int i=;i<n;i++)
- printf("%d\n", ranked[i]);
- cout<<endl;
- return ;
- }
UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】的更多相关文章
- st表树状数组入门题单
预备知识 st表(Sparse Table) 主要用来解决区间最值问题(RMQ)以及维护区间的各种性质(比如维护一段区间的最大公约数). 树状数组 单点更新 数组前缀和的查询 拓展:原数组是差分数组时 ...
- HDU 1166 敌兵布阵(线段树/树状数组模板题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- UESTC 912 树上的距离 --LCA+RMQ+树状数组
1.易知,树上两点的距离dis[u][v] = D[u]+D[v]-2*D[lca(u,v)] (D为节点到根节点的距离) 2.某条边<u,v>权值一旦改变,将会影响所有以v为根的子树上的 ...
- bzoj1103树状数组水题
(卧槽,居然规定了修改的两点直接相连,亏我想半天) 非常水的题,用dfs序(而且不用重复,应该是直接规模为n的dfs序)+树状数组可以轻松水 收获:树状数组一遍A(没啥好骄傲的,那么简单的东西) #i ...
- 敌兵布阵 HDU - 1166 (树状数组模板题,线段树模板题)
思路:就是树状数组的模板题,利用的就是单点更新和区间求和是树状数组的强项时间复杂度为m*log(n) 没想到自己以前把这道题当线段树的单点更新刷了. 树状数组: #include<iostrea ...
- 树状数组训练题2:SuperBrother打鼹鼠(vijos1512)
先给题目链接:打鼹鼠 这道题怎么写? 很明显是树状数组. 而且,很明显是二维树状数组. 如果你没学过二维的树状数组,那么戳开这里:二维树状数组 看完以后,你就会知道怎么做了. 没有什么好解释的,几乎就 ...
- 树状数组训练题1:弱弱的战壕(vijos1066)
题目链接:弱弱的战壕 这道题似乎是vijos上能找到的最简单的树状数组题了. 原来,我有一个错误的思想,我的设计是维护两个树状数组,一个是横坐标,一个是纵坐标,然后读入每个点的坐标,扔进对应的树状数组 ...
- POJ 2299 Ultra-QuickSort 求逆序数 (归并或者数状数组)此题为树状数组入门题!!!
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 70674 Accepted: 26538 ...
- ACM学习历程—HDU5700 区间交(树状数组 && 前缀和 && 排序)
http://acm.hdu.edu.cn/showproblem.php?pid=5700 这是这次百度之星初赛2B的第五题.省赛回来看了一下,有这样一个思路:对于所有的区间排序,按左值排序. 然后 ...
随机推荐
- 对Spring与SpringMVC的理解
Spring 在我的Spring --简介及环境搭建跑通Hello提到关于Spring的基本结构与功能 SpringMVC 先上一张SpringMVC的流程图 Spring MVC 是一个模型 - 视 ...
- Dos与Linux的断行字符
Symptom Dos和Linux下面的断行字符是不一样的,至于哪里不一样的呢,先举个例子看一看 Cause 我们也可以使用cat -A filename分别查看Dos和Linux下创建的文件,会发现 ...
- bzoj 1150: [CTSC2007]数据备份Backup
Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家 ...
- LAMP第一部分-环境搭建
1. 安装mysqlcd /usr/local/src/ wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686- ...
- 30分钟入门Java
技术只是工具,文档只是说明书,仅此而已. 写在前面 工作4年有余,盲人摸象般的走过弯路,也投机取巧的领悟到过一些类似"编程本质"的东西.现在开始我计划回顾下我的编程生涯.在这里分享 ...
- 配置linux下apache跨域问题
1.apache设置允许远程访问 打开FTP,登录服务器,找到etc文件夹下的httpd.conf文件,然后下载到本地 打开本地httpd.conf文件夹,找到对应的端口ip地址,修改如下 <V ...
- 如何去除本地文件与svn服务器的关联
1.每个目录逐个去删除.svn文件夹 .svn属于隐藏文件夹,可通过操纵Windows文件资源管理器使隐藏文件可视,删除该文件,即可. 2.首先建立一个新文件,文件命名为remove-svn-fold ...
- [编织消息框架][JAVA核心技术]动态代理应用3
我们先使用懒处理实现提取接口类上的元信息: public abstract class QRpcFactory { public static <T> T loadProxy(Class& ...
- idea激活网站地址,亲测可用(windows7,idea 2016)
help-register-license server,然后输入 http://idea.iteblog.com/key.php
- parse_str 与 http_build_query的使用
1 http_build_query() 使用 生成 URL-encode 之后的请求字符串 [建议在使用前,使用array_filter($query) 进行处理] 例子 1. http_build ...