[USACO13NOV]挤奶牛Crowded Cows(洛谷 P3088)
题目描述
Farmer John’s N cows (1 <= N <= 50,000) are grazing along a one-dimensional fence. Cow i is standing at location x(i) and has height h(i) (1 <= x(i),h(i) <= 1,000,000,000).
A cow feels “crowded” if there is another cow at least twice her height within distance D on her left, and also another cow at least twice her height within distance D on her right (1 <= D <= 1,000,000,000). Since crowded cows produce less milk, Farmer John would like to count the number of such cows. Please help him.
FJ有N(1 <= N <= 50,000)头奶牛沿着一维的栅栏吃草,第i头奶牛在目标点x(i) ,它的身高是 h(i) (1 <=x(i),h(i) <= 1,000,000,000)。
当一头奶牛左边D距离内而且右边D距离内有身高至少是它的两倍的奶牛,t (1 <= D <= 1,000,000,000),它就会觉得拥挤。
请计算觉得拥挤的奶牛的数量。
输入格式
Line 1: Two integers, N and D.
Lines 2…1+N: Line i+1 contains the integers x(i) and h(i). The locations of all N cows are distinct.
输出格式
- Line 1: The number of crowded cows.
输入 #1
6 4
10 3
6 2
5 3
9 7
3 6
11 2
输出 #1
2
跑两遍单调队列,每一遍都维护一个单调递减的队列,对符合的元素进行标记;当一个元素被标记两遍以后,符合要求;两遍单调队列难想,其他的都是单调队列板子;
代码:
#include<bits/stdc++.h>
using namespace std;
struct Node{int x,h;
}a[50100];
bool cmp(Node p,Node q){return p.x<q.x;
}
struct Nod{int post,date;
}sta[50100];
bool vis[50100][3];
int main(){int n,d;scanf("%d%d",&n,&d);for(int i=1;i<=n;i++){scanf("%d%d",&a[i].x,&a[i].h);}sort(a+1,a+n+1,cmp);int ans=1,head=1;for(int i=1;i<=n;i++){while(head<=ans&&sta[ans].date<=a[i].h){ans--;}sta[++ans].date=a[i].h;sta[ans].post=a[i].x;if(ans==1) continue;while(head<=ans&&sta[head].post<a[i].x-d){head++;}if(sta[head].date>=2*a[i].h){//cout<<i<<" "<<a[i].x<<endl; vis[i][1]=true;}}for(int i=1;i<=n;i++){sta[i].date=sta[i].post=0;//清0,特别注意}ans=1,head=1;for(int i=n;i>=1;i--){while(head<=ans&&sta[ans].date<=a[i].h){ans--;}sta[++ans].date=a[i].h;sta[ans].post=a[i].x;if(ans==1) continue;while(head<=ans&&sta[head].post>a[i].x+d){head++;}if(sta[head].date>=2*a[i].h){//cout<<i<<" "<<a[i].x<<endl;vis[i][2]=true;}}int sum=0;for(int i=1;i<=n;i++){if(vis[i][1]&&vis[i][2]){sum++;}}printf("%d\n",sum);return 0;
}
[USACO13NOV]挤奶牛Crowded Cows(洛谷 P3088)相关推荐
- 挤奶牛Crowded Cows 洛谷p3088
题目描述 Farmer John's N cows (1 <= N <= 50,000) are grazing along a one-dimensional fence. Cow i ...
- Crowded Cows(洛谷P3088)
[USACO13NOV]CrowdedCowsS[USACO13NOV]Crowded Cows S[USACO13NOV]CrowdedCowsS 传送门 思路 先看数据, 对于 202020 %的 ...
- BZOJ1232 安慰奶牛cheer (洛谷2916)
标签:并查集,最小生成树 tips:bzoj这题为权限题,可以去洛谷2916提交 Description Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N ( ...
- 分裂的奶牛群(洛谷P2907题题解,Java语言描述)
题目要求 P2907题目链接 分析 奶牛群分流,假设牛群有n头牛,能分,二者差k头,则分别为: (num-limit)/2 (num+limit)/2 分流条件: (num-limit)>0,因 ...
- 贪心策略构筑“奶牛铁塔”(洛谷P2676题题解,Java语言描述)
题目要求 P2676题目链接 分析 哈哈哈,好一个"超级书架"+"奶牛铁塔",哈哈哈-- 这题就是用贪心策略,需要排一个序,然后每次选最高大强壮的奶牛加入&qu ...
- P3088 [USACO13NOV]CROWDED COWS S
https://www.luogu.com.cn/problem/P3088 题目描述 Farmer John's N cows (1 <= N <= 50,000) are grazin ...
- 洛谷·bzoj·伟大的奶牛聚集Great Cow Gather
初见安~~这里是传送门:洛谷P2986 & bzoj P1827 题目描述 Bessie is planning the annual Great Cow Gathering for cows ...
- [洛谷P2124] 奶牛美容
洛谷题目链接:奶牛美容 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 6 16 ................ ..XXXX....XXX... ...XXXX... ...
- 洛谷1345 [Usaco5.4]奶牛的电信
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
最新文章
- MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?
- 可怕!如果张东升是个程序员......
- Ajax.net显示错误信息
- 学校管理系统逻辑关系
- mysql accountlevel1_mysql---修改表结构
- 动态获取textarea后面的p标签_HTML简单标签连起实现的小玩意:
- Python与机器视觉(x)windows下import cv2报错dll
- CES 2021落下帷幕 未来3年展会时间已公布
- android仿空间photoview,PickPhotoView:一个Android照片选择器
- 怎么估算空间利用率?新研发传感器分分钟搞定!
- Python selenium 简单的实现大麦网自动购票过程
- 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
- CMOS反相器的传输延时
- 自我激励的有效方法20个(推荐)
- 如何对文本框进行功能测试
- 10.业余无线电术语
- 我大学时代的文章,大学我很怀念!
- Android版Google Maps入门:高级
- 云计算实训室课程体系设计
- UE4 sequence 播放速率的调整(4.27)