POJ 3614 Sunscreen 贪心??!!!
http://poj.org/problem?id=3614
题意:每头牛都有防晒度,给出最大值和最小值,还给出防晒霜,每种防晒霜都有防晒度和数量,问最多可以有多少头牛防晒
读完题首先想到二分匹配,匈牙利算法,TLE,然后改成dinic网络流还是TLE, 最后是贪心,居然是贪心,my god,以后注意了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#define nMAX 2505
bool vs[nMAX];
struct Cow{
int min,max;
}cow[nMAX];
struct Lot
{
int num,cnt;
}lot[nMAX];
int cmp1(const void * a,const void * b)
{
return (*(Cow*)a).min<(*(Cow*)b).min?1:-1;
}
int cmp2(const void * a,const void * b)
{
return (*(Lot*)a).num<(*(Lot*)b).num?1:-1;
}
int main()
{
int i,j,k,nx,ny;
int ans;
while(~scanf("%d%d",&nx,&ny))
{
memset(vs,0,sizeof(vs));
for(i=0;i<nx;i++)
scanf("%d%d",&cow[i].min,&cow[i].max);
for(j=0;j<ny;j++)
scanf("%d%d",&lot[j].num,&lot[j].cnt);
qsort(cow,nx,sizeof(cow[0]),cmp1);
qsort(lot,ny,sizeof(lot[0]),cmp2);
ans=0;
for(i=0;i<nx;i++)
for(j=0;j<ny;j++)
if(!vs[i]&&lot[j].num>=cow[i].min&&lot[j].num<=cow[i].max&&lot[j].cnt)
{
lot[j].cnt--;
vs[i]=1;
ans++;
}
printf("%d\n",ans);
}
return 0;
}
贪心:
代码:

浙公网安备 33010602011771号