[USACO 07NOV]防晒霜Sunscreen {贪心}

题目

https://www.luogu.org/problemnew/show/P2887
http://poj.org/problem?id=3614


解题思路

按照 m i n S P F minSPF minSPF递减的顺序把奶牛排序,一次考虑每头牛。对于每头牛,扫描一遍所有的防晒霜,在这头牛能用的(若该防晒霜的强度符合这头牛的范围,并且瓶数还有剩余)防晒霜里找一个 S P F SPF SPF值最大的防晒霜使用。


代码

#include
#include
using namespace std; 
struct node{int mi,ma; }a[10001];
struct nodd{int spf,cov;}b[10001];
int n,l,ans; 
bool cmp(node x,node y) { return x.mi>y.mi;}
bool cmpp(nodd x,nodd y) { return x.spf>y.spf;}
int main()
{
	scanf("%d%d",&n,&l); 
	for (int i=1;i<=n;i++) scanf("%d%d",&a[i].mi,&a[i].ma);
	for (int i=1;i<=l;i++) scanf("%d%d",&b[i].spf,&b[i].cov);
	sort(a+1,a+n+1,cmp); sort(b+1,b+l+1,cmpp); 
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=l;j++)
	  if (b[j].cov&&b[j].spf>=a[i].mi&&b[j].spf<=a[i].ma){
	  	ans++; b[j].cov--; break; 
	  }
	printf("%d",ans); 
}

你可能感兴趣的:(贪心算法)