您的位置:首页 > 其它

bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛

2017-09-28 10:07 489 查看
题目链接

最开始看到是USACO就想n^2搞,但是看到100000就虚了...

先以左端点从小到大为第一关键字排序

这样就会保证,当我们从扫到 i 时,如果MaxRight大于等于 i 的right,那么 i 一定是不可行的

所以如果碰到这样的状况,就令ans=min(ans,i)  *下标从0开始

复杂度nlogn

这...应该算贪心吧...

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

struct node{
int l,r,num;
friend bool operator < (node a,node b){
return a.l<b.l;
}
};

int n;
node a[100010];

int main(){
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d%d",&a[i].l,&a[i].r);
a[i].num=i;
}
sort(a,a+n);
int Max=0,ans=n;
for(int i=0; i<n; i++){
if(a[i].r<=Max)ans=min(ans,a[i].num);
Max=max(Max,a[i].r);
}
printf("%d\n",ans);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: