标签:入门 for 输入输出 解决 语言 分析 style 策略 scanf
第一行一个正整数n (n <= 10000)代表活动的个数。
第二行到第(n + 1)行包含n个开始时间和结束时间。
开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
一行包含一个整数表示最少教室的个数。
3
1 2
3 4
2 9
2
#include<cstdio> #include<algorithm> using namespace std; struct node { long long str; long long end; }arr[10000+11]; bool cmp(node a,node b) { if(a.str==b.str) return a.end<b.end; return a.str<b.str; } long long b[10000+11]; int main() { int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%lld%lld",&arr[i].str,&arr[i].end); sort(arr,arr+n,cmp); b[0]=arr[0].end;//记录结束的时间 int i,j; long long sum=1; for(i=1;i<n;++i) { for(j=0;j<sum;++j) { if(arr[i].str>=b[j])//成立代表可以用这个教室,教室不增加,更新结束时间 { b[j]=arr[i].end; break; } } if(j==sum)//代表找不到教室,那就增加教室并更新结束时间 { b[sum]=arr[i].end; ++sum; } } printf("%lld\n",sum); return 0; }
如果对你有所帮助,别忘了加好评哦;么么哒!!下次见!88
标签:入门 for 输入输出 解决 语言 分析 style 策略 scanf
原文地址:http://www.cnblogs.com/cangT-Tlan/p/6219022.html