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:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
随机推荐
- Using XmlHttpRequest 写JSON网页
代码如下-----xmlhttprequest.responseJSON: <!DOCTYPE html> <html> <head> <meta chars ...
- java中数组是不是对象?
[转自知乎]:http://www.zhihu.com/question/26297216 JAVA中的数组是对象吗? public class test { public static void m ...
- L1-021 重要的话说三遍
这道超级简单的题目没有任何输入. 你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了. 注意每遍占一行,除了每行的回车不能有任何多余字符. 输入样例: 无 输出样 ...
- 基于资源名的MVC权限控制
在程序复杂程度不断上升的过程中,无可避免需要触碰到权限控制,而权限控制又与业务逻辑紧紧相关,市场上出现了大量的权限控制产品,而程序的开发,讲究去繁化简的抽象,在我的开发过程中,逐渐发现程序的权限控制核 ...
- 安装sybase服务器并连接数据库
一. 安装sybase服务器(根据安装指南安装) win32位的系统安装1550_winx86_32+补丁包eBF18157 win64位的系统安装ase157_winx64_安装包 如果不创建服务器 ...
- UINavigationController详细(转)
UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINa ...
- C 枚举 相同的值
/********************************************************************************* * C 枚举 相同的值 * 说明: ...
- BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- Laravel学习之旅(三)
视图 一.怎么新建视图: 1.视图默认存放路径:resources/views: 2.laravel模板支持原生的PHP,直接可以在resources/views新建一个PHP文件,例如: index ...
- HPU 1437: 王小二的求值问题
1437: 王小二的求值问题 时间限制: 1 Sec 内存限制: 128 MB提交: 141 解决: 31 统计 题目描述 题意超级简单,求一个序列的次大值. 输入 多组输入,每个测试实例占两行,包括 ...