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. Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp

    题目链接: http://codeforces.com/problemset/problem/535/D D. Tavas and Malekas time limit per test2 secon ...

  2. Daily target小队介绍(刘畅,陈杰,杨有存,唐祎琳,王晓哲,邵汝佳)

    一.团队介绍 1.团队构成: 2.队名: Daily target,我们的口号是Target your day! 3.团队项目描述: 我们计划写一个用于老师发布任务,学生接受任务的安卓app.教师安排 ...

  3. web安全测试系统

    最近写了个简单的web安全实践系统部署到了docker中 下载方式:docker pull ju5ton1y/websecurity github Dockerfile下载地址:https://git ...

  4. 使用 oracle pipelined 返回一个结果集;

    1.使用 create or replace package refcursor_pkg is -- Author : mr.yang -- Created : 5/14/2017 5:13:42 P ...

  5. [转帖]高通推出八核笔电处理器骁龙8cx 能超英特尔吗?

    高通推出八核笔电处理器骁龙8cx 能超英特尔吗? https://baijiahao.baidu.com/s?id=1619154699684981202&wfr=spider&for ...

  6. poj3320 Jessica's Reading Problem

    Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...

  7. C++模式学习------策略模式

    当遇到同一个对象有不同的行为,方法,为管理这些方法可使用策略模式. 策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来.通常把一个系列的算法包装到一系列的策略类里面,这些类继承一个抽象的 ...

  8. Luogu4885 灭顶之灾

    显然1的位置确定了整个矩阵,每一段连续的数即是对该位置的限制.化一下式子可以发现是一段区间或一段区间的补集,最后要求的是他们的交.看起来不太好求,于是转为求补集的并,那么排个序就完了. #includ ...

  9. Extend to Palindrome UVA - 11475(补成回文串)

    题意: 就是用最少的字符把原字符串补成回文串 解析: emm/.../网上都是用kmp和后缀数组做的 我没想到这俩的思路...emmm... 想到了exkmp的  就是原串和逆串匹配一下  注意要保证 ...

  10. [洛谷P4705]玩游戏

    题目大意:对于每个$k\in[1,t]$,求:$$\dfrac{\sum\limits_{i=1}^n\sum\limits_{j=1}^m(a_i+b_j)^k}{nm}$$$n,m,t\leqsl ...