BZOJ_1818_[Cqoi2010]内部白点 _扫描线+树状数组
BZOJ_1818_[Cqoi2010]内部白点 _扫描线+树状数组
Description
Input
Output
Sample Input
0 2
2 0
-2 0
0 -2
Sample Output
数据范围
36%的数据满足:n < = 500
64%的数据满足:n < = 30000
100%的数据满足:n < = 100000
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 300050
int n,V[N],c[N];
struct P {
int x,y;
}a[N];
inline bool cmp1(const P &x,const P &y) {return x.x==y.x?x.y<y.y:x.x<y.x;}
inline bool cmp2(const P &x,const P &y) {return x.y==y.y?x.x<y.x:x.y<y.y;}
struct A {
int x,y,z,opt,pri;
bool operator < (const A &u) const {
return x==u.x?pri<u.pri:x<u.x;
}
}q[N];
void fix(int x,int v) {for(;x<=n;x+=x&(-x)) c[x]+=v;}
int inq(int x) {int re=0;for(;x;x-=x&(-x)) re+=c[x]; return re;}
int main() {
scanf("%d",&n);
int i,cnt=0;
for(i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y),V[i]=a[i].y;
sort(V+1,V+n+1);
int ww=unique(V+1,V+n+1)-V-1;
for(i=1;i<=n;i++) a[i].y=lower_bound(V+1,V+ww+1,a[i].y)-V;
sort(a+1,a+n+1,cmp1);
for(i=1;i<=n;i++) {
int j=i;
for(;i<n&&a[i+1].x==a[j].x;i++);
q[++cnt]=(A){a[j].x,a[j].y,a[i].y,1,2};
}
sort(a+1,a+n+1,cmp2);
for(i=1;i<=n;i++) {
int j=i;
for(;i<n&&a[i+1].y==a[j].y;i++);
q[++cnt]=(A){a[j].x,a[j].y,1,0,1};
q[++cnt]=(A){a[i].x,a[j].y,-1,0,3};
}
sort(q+1,q+cnt+1);
int ans=0;
for(i=1;i<=cnt;i++) {
if(q[i].opt==0) fix(q[i].y,q[i].z);
else {
ans+=inq(q[i].z)-inq(q[i].y-1);
}
}
printf("%d\n",ans);
}
BZOJ_1818_[Cqoi2010]内部白点 _扫描线+树状数组的更多相关文章
- 【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组
[BZOJ1818][Cqoi2010]内部白点 Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变 ...
- BZOJ 1818: [Cqoi2010]内部白点 扫描线+树状数组
问题转化为求每一个极长横线段与极长纵线段的交点个数. 这个东西用扫描线+树状数组维护一下就可以了. code: #include <cstdio> #include <algorit ...
- FZU 2225 小茗的魔法阵 扫描线+树状数组
这个题和一个CF上的找"Z"的题差不多,都是扫描线+树状数组 从右上角的主对角线开始扫描,一直扫到左下角,每次更新,右延伸等于该扫描线的点,注意在其所在的树状数组更新就好了 时间复 ...
- BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组
BZOJ_4627_[BeiJing2016]回转寿司_离散化+树状数组 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 ...
- BZOJ_2743_[HEOI2012]采花_离线+树状数组
BZOJ_2743_[HEOI2012]采花_离线+树状数组 Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花 .花园足够大 ...
- HDU 5862 Counting Intersections 扫描线+树状数组
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 Counting Intersections Time Limit: 12000/ ...
- 【loj6041】「雅礼集训 2017 Day7」事情的相似度 后缀自动机+STL-set+启发式合并+离线+扫描线+树状数组
题目描述 给你一个长度为 $n$ 的01串,$m$ 次询问,每次询问给出 $l$ .$r$ ,求从 $[l,r]$ 中选出两个不同的前缀的最长公共后缀长度的最大值. $n,m\le 10^5$ 题解 ...
- 【bzoj4540】[Hnoi2016]序列 单调栈+离线+扫描线+树状数组区间修改区间查询
题目描述 给出一个序列,多次询问一个区间的所有子区间最小值之和. 输入 输入文件的第一行包含两个整数n和q,分别代表序列长度和询问数.接下来一行,包含n个整数,以空格隔开,第i个整数为ai,即序列第i ...
- [BZOJ4822][CQOI2017]老C的任务(扫描线+树状数组)
4822: [Cqoi2017]老C的任务 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 379 Solved: 203[Submit][Statu ...
随机推荐
- python学习(七)字典学习
#!/usr/bin/python # 字典 # 当时学java的时候, 语言基础就学了好久, 然后是各种API, 最后才是集合 # 键值对, 可变 # 1. 映射操作 D = {'food' : ' ...
- java中BigDecimal的学习
干着java的活,但是看的都是一些偏底层的东西(或者我根本就没有看),有点荒废了java的学习. 最近一直在用到一个类是BigDecimal,但都是模棱两可地在那儿用,并没有深入研究这个类的细节,感觉 ...
- iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办
本文转载至http://blog.sina.com.cn/s/blog_a843a8850101e0g7.html 现在需要的.h文件里面加上. 然后,在需要的.m文件按里面加上关键代码:self ...
- ios何时使用self.
本文转载至 http://blog.csdn.net/lvxiangan/article/details/27204265 何时使用self.在网上搜索或者论坛里的回复大多都是简简单单的说这与 ...
- EasyPlayerPro Windows播放器电子放大/局部放大播放功能实现
背景描述 在视频监控软件中,我们看到很多的软件都有电子放大功能, 按住鼠标左键不放,框选一个区域,再松开鼠标左键,即对选中的区域进行放大显示, 且可以重复该操作,逐步放大所需显示的区域, 有没有觉得, ...
- 关于EF输出sql的执行日志
sqlserver中可以使用sql profiler:但是mysql当中无法查看:只能借助于组件: ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用 ...
- HTML5(石头剪刀布游戏开发)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- win7下搭建nginx+php的开发环境(转)
在win7下用的是IIS做web服务器,但近来因项目需求的原因,需要在服务器遇到404错误的时候自动做转向(不是在客户端的跳转,而是在服务器收到客户端请求去某目录下读取文件返回时,如果发现目录或目录下 ...
- php 获取优酷视频的真实地址(2014.6月新算法)
上个礼拜发现优酷改版了,各种过滤优酷广告的插件都失效了,于是我百度了一下(谷歌也不能用了)发现优酷改算法了,在ckplayer论坛发现有人在6月25号发了个php 的优酷代理文件,下载下来发现,能用但 ...
- SDUT OJ 1479 数据结构实验之栈:行编辑器
数据结构实验之栈:行编辑器 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 一个简单的行编辑程序的功能是:接受用户从终端输入的程 ...