hdu2037今年暑假不AC
题目大意:n个节目,开始时间以及结束时间已知,求最多可以完整看完的节目的个数。
思路:首先将节目按结束时间早晚排序,可以证明从第【1-n】个节目中选,最早结束的节目最后肯定在观看计划之内,从第【2-n】个节目中选,如果第二个节目不和前一个节目冲突那么肯定也在观看计划内,一次类推,遍历一次节目单。典型的贪心思想。
code:
#include <iostream> #include<cstdio> #include<algorithm> #define maxn 105 using namespace std; typedef struct Pin{ int begin; int end; }Prog; Prog p[maxn]; bool compare(Prog a,Prog b) { return a.end < b.end; } int main() { int n; while(scanf("%d",&n)&&n!=0){ for(int i = 0;i < n;i ++) { scanf("%d %d",&p[i].begin,&p[i].end); } sort(p,p+n,compare); int ans = 1,t = 0; for(int i = 1;i < n;i ++) { if(p[i].begin >= p[t].end){ ans ++; t = i; } } printf("%d ",ans); } return 0; }