[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<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long lol;
struct ZYYS
{
int x,y;
}a[];
int t[],num,l[],r[],n;
lol c[],ans;
bool cmp(ZYYS a,ZYYS b)
{
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
void update(int x,lol y)
{
while (x<=num)
{
c[x]+=y;
x+=(x&(-x));
}
}
lol query(int x)
{
lol s=;
while (x)
{
s+=c[x];
x-=(x&(-x));
}
return s;
}
int main()
{int i,ed,j;
cin>>n;
for (i=;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
t[++num]=a[i].x;t[++num]=a[i].y;
}
sort(t+,t+num+);
num=unique(t+,t+num+)-t-;
for (i=;i<=n;i++)
{
a[i].x=lower_bound(t+,t+num+,a[i].x)-t;
a[i].y=lower_bound(t+,t+num+,a[i].y)-t;
}
sort(a+,a+n+,cmp);
for (i=;i<=n;i++)
r[a[i].y]++;
ans=n;
for (i=;i<=n;i=ed)
{
ed=i;
while (ed<=n&&a[ed].x==a[i].x) ed++;
for (j=i;j<ed;j++)
{
int y=a[j].y;
if (l[y]==)
update(y,);
if (r[y]==)
update(y,-);
l[y]++;r[y]--;
if (j>i&&j<ed)
ans+=query(y-)-query(a[j-].y);
}
}
cout<<ans<<endl;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long lol;
struct ZYYS
{
int x,y;
}a[800001];
int t[800001],num,l[800001],r[800001],n;
lol c[800001],ans;
bool cmp(ZYYS a,ZYYS b)
{
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
void update(int x,lol y)
{
while (x<=num)
{
c[x]+=y;
x+=(x&(-x));
}
}
lol query(int x)
{
lol s=0;
while (x)
{
s+=c[x];
x-=(x&(-x));
}
return s;
}
int main()
{int i,ed,j;
freopen("1818.in","r",stdin);
freopen("1818.out","w",stdout);
cin>>n;
for (i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
t[++num]=a[i].x;t[++num]=a[i].y;
}
sort(t+1,t+num+1);
num=unique(t+1,t+num+1)-t-1;
for (i=1;i<=n;i++)
{
a[i].x=lower_bound(t+1,t+num+1,a[i].x)-t;
a[i].y=lower_bound(t+1,t+num+1,a[i].y)-t;
}
sort(a+1,a+n+1,cmp);
for (i=1;i<=n;i++)
r[a[i].y]++;
ans=n;
for (i=1;i<=n;i=ed)
{
ed=i;
while (ed<=n&&a[ed].x==a[i].x) ed++;
for (j=i;j<ed;j++)
{
int y=a[j].y;
if (l[y]==0)
update(y,1);
if (r[y]==1)
update(y,-1);
l[y]++;r[y]--;
if (j>i&&j<ed)
ans+=query(y-1)-query(a[j-1].y);
}
}
cout<<ans<<endl;
}
[CQOI2010]内部白点的更多相关文章
- Bzoj1818: [Cqoi2010]内部白点 && Tyvj P2637 内部白点 扫描线,树状数组,离散化
1818: [Cqoi2010]内部白点 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 704 Solved: 344[Submit][Status] ...
- 【BZOJ1818】[CQOI2010]内部白点(树状数组,扫描线)
[BZOJ1818][CQOI2010]内部白点(树状数组,扫描线) 题面 BZOJ 题解 不难发现\(-1\)就是在搞笑的. 那么对于每一行,我们显然可以处理出来最左和最右的点,那么等价于我们在横着 ...
- 【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组
[BZOJ1818][Cqoi2010]内部白点 Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变 ...
- BZOJ_1818_[Cqoi2010]内部白点 _扫描线+树状数组
BZOJ_1818_[Cqoi2010]内部白点 _扫描线+树状数组 Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟 ...
- bzoj 1818 Cqoi2010 内部白点 扫描线
[Cqoi2010]内部白点 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1126 Solved: 530[Submit][Status][Disc ...
- 【BZOJ】1818: [Cqoi2010]内部白点(树状数组+离散+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1818 这一题一开始我就看错了,bzoj的那个绝对值109简直坑人,应该是10^9,我直接写了个暴力. ...
- 1818: [Cqoi2010]内部白点
Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1394 Solved: 625 [Submit][Status][Discuss] Descriptio ...
- bzoj1818 [Cqoi2010]内部白点
Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变黑,直到不存在内部白点为止.你的任务是统计最后网格 ...
- B1818 [Cqoi2010]内部白点 树状数组
这个题的想法很好想,就是进行排序之后直接检查每个点的上下左右是否有黑点就行.但是直接枚举显然不行,那怎么办呢?我们就用树状数组维护扫描线,把每排左右点看成一条线覆盖,然后从下往上扫,遇到下加一,遇到上 ...
随机推荐
- hadoop集群简单搭建
分布式搭建 在ubuntu下创建hadoop用户组和用户 bigdata@master:~$sudo addgroup hadoop bigdata@master:~$sudo adduser --i ...
- Beta版本敏捷冲刺每日报告——Day4
1.情况简述 Beta阶段第四次Scrum Meeting 敏捷开发起止时间 2017.11.5 08:00 -- 2017.11.5 22:00 讨论时间地点 2017.11.5晚9:00,软工所实 ...
- 20162328蔡文琛week06
学号 2016-2017-2 <程序设计与数据结构>第X周学习总结 教材学习内容总结 继承是从已有类派生出一个新类的过程. 继承的目的之一之复用已有的软件. 继承呢在子类和父类见建立了is ...
- Scrum 冲刺 总结
Scrum 冲刺 总结 冲刺阶段链接 Scrum冲刺第一天 Scrum冲刺第二天 Scrum冲刺第三天 Scrum冲刺第四天 Scrum冲刺第五天 Scrum冲刺第六天 Scrum冲刺第七天 冲刺阶段 ...
- 个人技术博客(alpha)
APP的权限校验不同于web网页端,web一般使用session记录用户的状态信息,而app则使用token令牌来记录用户信息.有这样一个场景,系统的数据量达到千万级,需要几台服务器部署,当一个用户在 ...
- xShell终端下中文乱码问题
今天,可能是因为不小心中途打断了xShell更新,结果打开xShell发现里面的中文全成了乱码.于是去网上查了一下原因. 更新xshell(xshell5)以及其他终端中文乱码的原因无非有三种 (1 ...
- sql2008r2,以前好好可以用的,但装了vs2017后,连接不上了,服务也停了,结果手动也 启动不了, 无法加载或初始化请求的服务提供程
日志: 2017-12-14 12:33:17.53 服务器 A self-generated certificate was successfully loaded for encryption.2 ...
- JQ 标签相关知识
1.判断 checkbox 和 radio 是否选中 if($("标签选择器").is(":checked")) 2.改变 checkbox 选中状态 .pro ...
- Python-进程与线程理论基础-Day10
进程与线程理论基础 1.背景知识 理论基础: 一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 二 多道技术: 1.产生背景 ...
- 电梯模拟C++
1.问题描述与要求 模拟某校九层教学楼的电梯系统.该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的"本垒层",电梯"空闲"时,将来到该层候 ...