nyoj 14 会场安排问题

来源:互联网 发布:java终止for无限循环 编辑:程序博客网 时间:2024/04/30 09:32
</pre><p>本体是经典的贪心算法问题</p><p>按结束时间由小到大排序</p><p>第一个区间是一定要选的</p><p>之后 需要把所有和区间1相交的区间排除在外 并记录上一个被选的区间编号</p><p>这样 排序后只需扫描一次就可以得到正确结果</p><pre name="code" class="cpp">#include<stdio.h>#include<stdlib.h>struct tme{int st;int ed;};int cmp(const void*a,const void*b){return (*(tme*)a).ed>(*(tme*)b).ed?1:-1;} int main(){tme a[10010];int m;int i,j;scanf("%d",&m);while(m--){int count=1;int n;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d%d",&a[i].st,&a[i].ed);}qsort(a,n,sizeof(tme),cmp);for(i=1,j=0;i<n;i++){if(a[i].st>a[j].ed){count++;j=i;}}printf("%d\n",count);}}

0 0
原创粉丝点击