bzoj 1288: Neighbours
Description
Input
Output
离散化后用排序+树状数组统计一下
#include<bits/stdc++.h>
typedef long long i64;
const int N=5e5+;
char buf[],*ptr=buf+;
int G(){
if(ptr-buf==)fread(ptr=buf,,,stdin);
return *ptr++;
}
int _(){
int x=;
if(ptr-buf<){
while(*ptr<)++ptr;
while(*ptr>)x=x*+*ptr++-;
}else{
int c=G();
while(c<)c=G();
while(c>)x=x*+c-,c=G();
}
return x;
}
i64 a0,a1,a2,a3,a4;
int xm,ym,n;
int xs[N],ys[N],xp,yp;
int xw[N][],yw[N][],f[N],g[N];
struct pos{
int x,y;
}ps[N],ps2[N],qs[N],qs2[N];
bool cmpx(pos a,pos b){
return a.x<b.x||a.x==b.x&&a.y<b.y;
}
bool cmpy(pos a,pos b){
return a.y<b.y||a.y==b.y&&a.x<b.x;
}
void inc(int*f,int w){
for(++w;w<=n;w+=w&-w)++f[w];
}
int sum(int*f,int w){
int s=;
for(++w;w;w-=w&-w)s+=f[w];
return s;
}
int main(){
xm=_()+,ym=_()+,n=_();
for(int i=;i<n;++i){
ps[i].x=xs[i]=_();
ps[i].y=ys[i]=_();
}
std::sort(xs,xs+n);
xp=std::unique(xs,xs+n)-xs;
std::sort(ys,ys+n);
yp=std::unique(ys,ys+n)-ys;
a0=i64(xm-xp)*(ym-yp);
for(int i=;i<n;++i){
ps[i].x=std::lower_bound(xs,xs+xp,ps[i].x)-xs;
ps[i].y=std::lower_bound(ys,ys+yp,ps[i].y)-ys;
}
memcpy(ps2,ps,n*sizeof(pos));
std::sort(ps,ps+n,cmpx);
for(int i=,j=,p1,p2;i<n;i=j){
int x=ps[i].x;
for(++j;j<n&&ps[j].x==x;++j){
p1=ps[j-].y,p2=ps[j].y;
a2+=ys[p2]-ys[p1]-(p2-p1);
}
p1=yw[x][]=ps[i].y;
p2=yw[x][]=ps[j-].y;
a1+=ys[p1]+ym-ys[p2]-(p1+yp-p2);
}
std::sort(ps2,ps2+n,cmpy);
for(int i=,j=,p1,p2;i<n;i=j){
int y=ps2[i].y;
for(++j;j<n&&ps2[j].y==y;++j){
p1=ps2[j-].x,p2=ps2[j].x;
a2+=xs[p2]-xs[p1]-(p2-p1);
}
p1=ps2[i].x;
p2=ps2[j-].x;
a1+=xs[p1]+xm-xs[p2]-(p1+xp-p2);
qs[y]=(pos){p1,y};
qs2[y]=(pos){p2,y};
}
std::sort(qs,qs+yp,cmpx);
std::sort(qs2,qs2+yp,cmpx);
for(int x=,p=,pp=,i=;x<xp;++x){
for(;p<yp&&qs2[p].x<x;++p)inc(f,qs2[p].y);
for(;pp<yp&&qs[pp].x<x;++pp)inc(g,qs[pp].y);
for(++i;i<n&&ps[i].x==x;++i){
int p1=ps[i-].y,p2=ps[i].y;
a4+=sum(g,p2-)-sum(f,p2-)-(sum(g,p1)-sum(f,p1));
}
a2+=sum(f,yw[x][]-)+p-sum(f,yw[x][]);
}
memset(f,,sizeof(int)*(n+));
for(int x=xp-,p=yp-,t=;x>=;--x){
for(;p>=&&qs[p].x>x;--p)inc(f,qs[p].y),++t;
int s0,s1;
a2+=(s0=sum(f,yw[x][]-))+t-(s1=sum(f,yw[x][]));
}
a3=i64(xm)*ym-n-a0-a1-a2-a4;
printf("%lld %lld %lld %lld %lld\n",a0,a1,a2,a3,a4);
return ;
}
bzoj 1288: Neighbours的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 【BZOJ】【1211】【HNOI2004】树的计数
Prufer序列+组合数学 嗯哼~给定每个点的度数!求树的种数!那么很自然的就想到是用prufer序列啦~(不知道prufer序列的……自己再找找资料吧,这里就不放了,可以去做一下BZOJ1005明明 ...
- 【BZOJ】初级水题列表——献给那些想要进军BZOJ的OIers(自用,怕荒废了最后的六月考试月,刷刷水题,水水更健康)
BZOJ初级水题列表——献给那些想要进军BZOJ的OIers 代码长度解释一切! 注:以下代码描述均为C++ RunID User Problem Result Memory Time Code_Le ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- 【CodeVS 1288】埃及分数
http://codevs.cn/problem/1288/ loli秘制面向高一的搜索,好难啊QAQ 我本来想按照分母从大到小搜,因为这样分母从小到大枚举到的第一个可行方案就是最优方案. 但貌似会T ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
随机推荐
- vuex 简单理解
废话不多说,直接上图! 不懂的 参考 API
- XE里, TStringField 还是 ansi的
{ TStringField } TStringField = class(TField) private FFixedChar: Boolean; FTransliterate: Boolean; ...
- 搜索评价指标——NDCG
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:https://www.cnblogs.com/by-dream/p/9403984.html 概念 NDCG,Normali ...
- 使用pool的多进程,不执行的问题
from multiprocessing import Pool def fetch_data(idlist,test): pass p=Pool(4) result=[] for i in rang ...
- chrome安装HostAdmin app
之前在chrome应用商店搜索HostAdmin App就可以搜到,最近发现搜不到了:可以按照下面的步骤进行安装. 1.找个安装有HostAdmin App的电脑,然后在chrome的扩展程序中找到它 ...
- UI基础:事件.响应链 分类: iOS学习-UI 2015-07-03 19:51 1人阅读 评论(0) 收藏
UIEvent:事件,是由硬件捕捉的一个代表用户操作操作设备的对象. 事件分三类:触摸事件.晃动事件.远程控制事件. 触摸事件:用户通过触摸设备屏幕操作对象,.输入数据.支持多点触摸,包含1个到多个触 ...
- Texas Instruments matrix-gui-2.0 hacking -- generate.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Centos(linux)下的Python
Centos(linux)下安装python3(python2和python3共存) yum -y install lrzsz 首先安装lrzsz工具,lrzsz是一款在linux里可代替ftp上传和 ...
- 《DSP using MATLAB》Problem 3.12
- hdu2068 RPG的错排 组合数/递推
#include<stdio.h> ]; long long c(int a,int b) { ,j; ;i>=a-b+,j<=b;i--,j++) sum=sum*i/j; ...