bzoj千题计划155:bzoj3543: [ONTAK2010]Garden
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的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- 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 ...
- Daily target小队介绍(刘畅,陈杰,杨有存,唐祎琳,王晓哲,邵汝佳)
一.团队介绍 1.团队构成: 2.队名: Daily target,我们的口号是Target your day! 3.团队项目描述: 我们计划写一个用于老师发布任务,学生接受任务的安卓app.教师安排 ...
- web安全测试系统
最近写了个简单的web安全实践系统部署到了docker中 下载方式:docker pull ju5ton1y/websecurity github Dockerfile下载地址:https://git ...
- 使用 oracle pipelined 返回一个结果集;
1.使用 create or replace package refcursor_pkg is -- Author : mr.yang -- Created : 5/14/2017 5:13:42 P ...
- [转帖]高通推出八核笔电处理器骁龙8cx 能超英特尔吗?
高通推出八核笔电处理器骁龙8cx 能超英特尔吗? https://baijiahao.baidu.com/s?id=1619154699684981202&wfr=spider&for ...
- poj3320 Jessica's Reading Problem
Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...
- C++模式学习------策略模式
当遇到同一个对象有不同的行为,方法,为管理这些方法可使用策略模式. 策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来.通常把一个系列的算法包装到一系列的策略类里面,这些类继承一个抽象的 ...
- Luogu4885 灭顶之灾
显然1的位置确定了整个矩阵,每一段连续的数即是对该位置的限制.化一下式子可以发现是一段区间或一段区间的补集,最后要求的是他们的交.看起来不太好求,于是转为求补集的并,那么排个序就完了. #includ ...
- Extend to Palindrome UVA - 11475(补成回文串)
题意: 就是用最少的字符把原字符串补成回文串 解析: emm/.../网上都是用kmp和后缀数组做的 我没想到这俩的思路...emmm... 想到了exkmp的 就是原串和逆串匹配一下 注意要保证 ...
- [洛谷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 ...