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 ...
随机推荐
- kafka的使用
kafka基于zookeeper. 需要安装kafka.zookeeper. 安装方法参考:http://tzz6.iteye.com/blog/2401197 启动zookeeper:点击zkSer ...
- (转载)Android:学习AIDL,这一篇文章就够了(上)
前言 在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了.不过又转念一想, ...
- activity的23张表
--二进制数据表 SELECT * FROM act_ge_bytearray; --属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录, SELECT * FROM act_g ...
- ArrayList的使用方法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和I ...
- 模拟post提交
模拟post提交 function post(URL, PARAMS) { var temp = document.createElement("form"); temp.acti ...
- JWT的初步了解以及session、cookie机制
1.什么是状态保持? 想要了解JWT,首先需要知道什么是状态保持,举一个例子来说:无论是在web上还是在手机app上,我们都可以以游客的身份访问,此时都会有登录/注册字眼,当我们登录之后,就会是我们的 ...
- pace.js 原理(转)
pace.js监控了什么: pace.js对于加载进度监控了什么呢?通过阅读源码,我们看到整体的进度有四个部分组成:document,elements,eventLag和ajax这四种监视器(Moni ...
- [AH2017/HNOI2017]影魔(主席树+单调栈)
设\(l[i]\)为i左边第一个比i大的数的下标.\(r[i]\)为i右边第一个比i大的数的下标. 我们把\(p1,p2\)分开考虑. 当产生贡献为\(p1\)时\(i\)和\(j\)一定满足,分别为 ...
- POJ 2228 Naptime(DP+环形处理)
题解 这题一眼望去DP. 发现自己太智障了. 这题想的是O(n^3m)的. 环形处理只会断环成链....然后DP也想的不好. 我们先考虑如果除去环这题该怎么做? dp[i][j][0/1]代表到第i小 ...
- 微信小程序的开启授权,当单机取消授权后 再次授权
//单机去搜索 toSearch:function(){ this.getLocation(res => { console.log('成功') wx.navigateTo({ url: `.. ...