bzoj1604 牛的邻居 STL
Description
1 1
3 3
2 2
10 10
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long long
int f[maxn],tot[maxn];
int n,m,ans,mx;
ll c;
struct node{
ll x,y;int id;
}a[maxn];
inline int read(){
int x,f;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
multiset<node> b;
multiset<node>:: iterator it;
bool cmp(node a,node b){
return a.x<b.x;
}
bool operator<(node a,node b){return a.y<b.y;}
int find(int x){
if(f[x]!=x)return find(f[x]);
else return x;
}
void work(int x,int y){//将两个群合并在一起
int p=find(x),q=find(y);
if(p!=q){
tot[p]+=tot[q];tot[q]=;ans--;
f[q]=p;
}
}
void solve(){
node k;int i,he=;
sort(a+,a+n+,cmp);b.insert(a[]);
k.x=;k.y=1e10;k.id=;b.insert(k);
k.x=;k.y=-1e10;k.id=;b.insert(k);
for(i=;i<=n;i++){
while(a[i].x-a[he].x>c)b.erase(b.find(a[he])),++he;//判断x是否合法
it=b.lower_bound(a[i]);
k=*it;
if(k.y-a[i].y<=c)work(k.id,a[i].id);
k=*--it;
if(a[i].y-k.y<=c)work(k.id,a[i].id);
b.insert(a[i]);
}
}
int main(){
scanf("%d%d",&n,&c);
int kx,ky;
ans=n;//ans是群数,tot是每个群里牛的数量
for(int i=;i<=n;i++){
scanf("%d%d",&kx,&ky);
f[i]=i;tot[i]=;
a[i].x=kx+ky;
a[i].y=kx-ky;
a[i].id=i;
}
solve();
for(int i=;i<=n;i++)mx=max(tot[i],mx);
printf("%d %d",ans,mx);
return ;
}
bzoj1604 牛的邻居 STL的更多相关文章
- 【题解】P2161[SHOI2009]会场预约(set)
[题解][P2161 SHOI2009]会场预约 题目很像[[题解]APIO2009]会议中心 \(set\)大法好啊! 然后我们有个小\(trick\)(炒鸡帅),就是如何优雅地判断线段交? str ...
- [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 试题描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发 ...
- 【BZOJ1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Treap+并查集
[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000) ...
- 【bzoj1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 旋转坐标系+并查集+Treap/STL-set
题目描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤ ...
- [BZOJ1604] [Usaco2008 Open] Cow Neighborhoods 奶牛的邻居 (queue & set)
Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l ...
- 牛客网多校第3场C-shuffle card 平衡树或stl(rope)
链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 牛客小白D题(STL的迭代器)
「只要我拉动绳线,你就得随之起舞.」 ——泰兹瑞 泰兹瑞来到卡拉德许之后,由于他精湛的神器制造技术,可谓是过的如鱼得水.这次,他为自己打造了一个编辑器,称为威穆(Vei ...
- 牛客训练二:处女座的签到题(STL+精度+三角形求面积公式)
题目链接:传送门 知识点: (1)三个点,三角形求面积公式 (2)精度问题: double 15-16位(参考文章) float 6-7位 long long 约20位 int 约10位 unsign ...
随机推荐
- 11.使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题
通过Boost库可以在C++项目中使用正则表达式,配置好环境后链接过程出现”无法打开libboost_regex-vc120-mt-sgd-1_62.lib”的错误. 原因是按照官方生成lib的方法 ...
- Kali linux 2016.2(Rolling)中的payloads模块详解
不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)中的Exploits模块详解 payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在M ...
- (转载)Android滑动冲突的完美解决
Android滑动冲突的完美解决 作者:softwindy_brother 字体:[增加 减小] 类型:转载 时间:2017-01-24我要评论 这篇文章主要为大家详细介绍了Android滑动冲突的完 ...
- 内部div自动扩张剩余宽度
<div id="container"> <div id="left">左边</div> <div id=" ...
- Struts1、Struts2、Hibernate、Spring框架工作原理介绍
Struts1工作原理 Struts1工作原理图 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控 ...
- 优动漫PAINT-樱花教程
很雅致清新的樱花教程~在很多地方都可以运用到哟~原文转载自优动漫官网. 想要Get到更多有关优动漫的信息包括软件下载,可关注http://www.dongmansoft.com.
- 路飞学城Python-Day10
[37.函数-命名空间]命名空间又称为name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量 x = 1,存放于内存中,那名字x存放在哪里呢?名称空间正式存放名字x和1绑定关 ...
- LightOJ-1236 Pairs Forming LCM 唯一分解定理
题目链接:https://cn.vjudge.net/problem/LightOJ-1236 题意 给一整数n,求有多少对a和b(a<=b),使lcm(a, b)=n 注意数据范围n<= ...
- KVM 日常使用命令
[root@Eren liwm]# ps ax | grep kvm 681 ? S< 0:00 [kvm-irqfd-clean]17597 pts/0 S+ ...
- c++常见操作的模板
1.统计时间 #include<ctime> clock_t startTime = clock(); code(); clock_t endTime = clock(); cout &l ...