http://www.lydsy.com/JudgeOnline/problem.php?id=3543

枚举每一个点,作为左下角

然后枚举 相同的x坐标,y坐标 少的那个 作为另一个角

二分判断另外两个角是否存在

#include<map>
#include<vector>
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 100001 int x[N],y[N];
int hx[N],hy[N],tx,ty; map<int,int>fx,fy; vector<int>sx[N],sy[N]; void read(int &x)
{
x=; int f=; char c=getchar();
while(!isdigit(c)) { if(c=='-') f=-; c=getchar(); }
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
x*=f;
} int main()
{
int n;
read(n);
int mi=;
for(int i=;i<=n;++i)
{
read(x[i]);
read(y[i]);
hx[++tx]=x[i];
hy[++ty]=y[i];
mi=min(mi,x[i]);
mi=min(mi,y[i]);
}
sort(hx+,hx+tx+);
sort(hy+,hy+ty+);
tx=unique(hx+,hx+tx+)-hx-;
ty=unique(hy+,hy+ty+)-hy-;
for(int i=;i<=n;++i)
{
x[i]=lower_bound(hx+,hx+tx+,x[i])-hx;
y[i]=lower_bound(hy+,hy+ty+,y[i])-hy;
}
mi=max(,-mi);
for(int i=;i<=tx;++i) fx[hx[i]+mi]=i;
for(int i=;i<=ty;++i) fy[hy[i]+mi]=i;
for(int i=;i<=n;++i)
{
sx[x[i]].push_back(y[i]);
sy[y[i]].push_back(x[i]);
}
for(int i=;i<=tx;++i) sort(sx[i].begin(),sx[i].end());
for(int i=;i<=ty;++i) sort(sy[i].begin(),sy[i].end());
int j,k;
int sizx,sizy;
int len;
int xx,yy;
int ans=;
for(int i=;i<=n;++i)
{
j=upper_bound(sx[x[i]].begin(),sx[x[i]].end(),y[i])-sx[x[i]].begin();
k=upper_bound(sy[y[i]].begin(),sy[y[i]].end(),x[i])-sy[y[i]].begin();
sizx=sx[x[i]].size();
sizy=sy[y[i]].size();
if(sizx-j<sizy-k)
{
for(;j<sizx;++j)
{
len=hy[sx[x[i]][j]]-hy[y[i]];
xx=fx[hx[x[i]]+len+mi];
if(!xx) continue;
if(binary_search(sx[xx].begin(),sx[xx].end(),y[i]) && binary_search(sx[xx].begin(),sx[xx].end(),sx[x[i]][j]))
ans++;
}
}
else
{
for(;k<sizy;++k)
{
len=hx[sy[y[i]][k]]-hx[x[i]];
yy=fy[hy[y[i]]+len+mi];
if(!yy) continue;
if(binary_search(sy[yy].begin(),sy[yy].end(),x[i]) && binary_search(sy[yy].begin(),sy[yy].end(),sy[y[i]][k]))
ans++;
}
}
}
cout<<ans;
}

bzoj千题计划155:bzoj3543: [ONTAK2010]Garden的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. Struts2 核心流程

    1.Struts2架构图  这是Struts2官方站点提供的Struts 2 的整体结构.  执行流程图 2.Struts2部分类介绍  这部分从Struts2参考文档中翻译就可以了. ActionM ...

  2. Scapy 网段中ping扫描

    安装scapy pip3 install scapy-python3 交互式ip包构造 #scapy >>> ping = sr(IP(dst='202.100.1.1')/ICMP ...

  3. HDU 4281 Judges' response 状压dp+多旅行商问题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4281 Judges' response Time Limit: 2000/1000 MS (Java ...

  4. 【贪心算法】POJ-3040 局部最优到全局最优

    一.题目 Description As a reward for record milk production, Farmer John has decided to start paying Bes ...

  5. *** error 65: access violation at C:0x001B : no 'execute/read' permission

    转自:http://blog.csdn.net/chenqiai0/article/details/7827071 很多人在进行串口调试的时候会遇到这个问题,请大家略看我的代码,解决方法在其中 //实 ...

  6. jQuery ajax - get() 方法

    AJAX = Asynchronous javaScript and XML.  AJAX 是一种创建快速动态网页的技术. AJAX 通过在后台与服务器交换少量数据的方式,允许网页进行异步更新.这意味 ...

  7. 转 理解vuex -- vue的状态管理模式

    转自:https://segmentfault.com/a/1190000012015742 vuex是什么? 先引用vuex官网的话: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...

  8. HBase 架构与工作原理4 - 压缩、分裂与故障恢复

    本文系转载,如有侵权,请联系我:likui0913@gmail.com Compacation HBase 在读写的过程中,难免会产生无效的数据以及过小的文件,比如:MemStore 在未达到指定大小 ...

  9. 使用w3m访问页面执行函数

    Ubuntu系统中 在计划任务中使用 w3m命令访问地址 locahost/index.php,或许使用curl "locahost/index.php"来访问地址

  10. mysql 简单sql语句

    1.修改数据库的编码            alter database test character set utf8 2.创建新表    : create table  text4(id int( ...