我发现贪心的典型题目就是活动安排,这是一道入门贪心!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdlib>
using namespace std;
const int maxn=50005;
int m,t;
struct node
{
int day;
int start;
int end;
} p[maxn];
int cmp(node a,node b)
{
if(a.day==b.day)
{
return a.end<b.end;
}
else
return a.day<b.day;
}
int main()
{
int i;
int tcase=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%d%d%d",&p[i].day,&p[i].start,&p[i].end);
}
sort(p,p+m,cmp);
int temp=0;
int sum=1;//注意这里第一个
int k=0;
for(i=1; i<m; i++)
{
if(p[i].day==p[k].day&&p[i].start>=p[temp].end)//这里要分开,同是一天的就用贪心
{
temp=i;
sum++;
}
if(p[i].day!=p[k].day)
{
k=i;
temp=i;
sum++;
}
}
printf("Scenario #");
printf("%d:\n",++tcase);
printf("%d\n\n",sum);//这里的格式问题也必须注意,就是每一个case后面都有一个换行!
}
return 0;
}
HDU 2390
最新推荐文章于 2020-03-06 15:50:35 发布