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 ...
随机推荐
- python 3.x 学习笔记12 (反射 and 异常)
1.反射通过字符串映射或修改程序运行时的状态.属性.方法 getattr(obj,name_str): 根据字符串name_str去获取obj对象里的对应的方法的内存地址 hasttr(obj,na ...
- 使用maven插件dockerfile-maven-plugin生成Docker镜像并推送到镜像仓库
1.引入maven插件 <build> <plugins> <plugin> <groupId>com.spotify</groupId> ...
- scrapy爬取boss直聘实习生数据
这个..是我最近想找实习单位..结果发现boss上很多实习单位名字就叫‘实习生’.......太不讲究了 == 难怪一直搜不到..咳,其实是我自己水平有限,有些简历根本就投不出去 == 所以就想爬下b ...
- Adobe AIR and Flex - 保存序列化对象文件(译)
创建任何桌面应用程序几乎总是需要在本地存储数据,通过Adobe AIR我们有几下面几个选择,一个是我们能够使用内置的 SQLite 数据库支持,对于少量的数据这是大材小用了.另外一个选择是我们通过把数 ...
- 【CS round 34】Minimize Max Diff
[题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数 ...
- 【转】 C# DEBUG 调试信息打印及输出详解
[转] C# DEBUG 调试信息打印及输出详解 1.debug只在[debug模式下才执行](运行按钮后面的下拉框可选) 2.debug提供了许多调试指令,如断言 System.D ...
- OpenStack-API开发
介绍两种OpenStack-API(Java版)--jcoulds && openstack4j Jclouds 1.介绍 jclouds -该API提供云计算环境的可移植抽象层以及云 ...
- Qt之QCryptographicHash
简述 QCryptographicHash类提供了生成密码散列的方法.该类可以用于生成二进制或文本数据的加密散列值.目前支持MD4.MD5.SHA-1.SHA-224.SHA-256.SHA-384和 ...
- 过Hard题目.周末
# Title Editorial Acceptance Difficulty Frequency . 65 Valid Number 12.6% Hard . 126 Word ...
- swift学习笔记(五)构造过程
构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.在构造过程中,对每一个属性进行了初始值预设和其它必要的准备和初始化工作. 与OC相比,swift的构造函数.不须要返回值.同一时候,在 ...