A - Sunscreen

A-Sunscreen

To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when they’re at the beach. Cow i has a minimum and maximum SPF rating (1 ≤ minSPFi ≤ 1,000; minSPFi ≤ maxSPFi ≤ 1,000) that will work. If the SPF rating is too low, the cow suffers sunburn; if the SPF rating is too high, the cow doesn’t tan at all…

The cows have a picnic basket with L (1 ≤ L ≤ 2500) bottles of sunscreen lotion, each bottle i with an SPF rating SPFi (1 ≤ SPFi ≤ 1,000). Lotion bottle i can cover coveri cows with lotion. A cow may lotion from only one bottle.

What is the maximum number of cows that can protect themselves while tanning given the available lotions?

Input

  • Line 1: Two space-separated integers: C and L
  • Lines 2…C+1: Line i describes cow i’s lotion requires with two integers: minSPFi and maxSPFi
  • Lines C+2…C+L+1: Line i+C+1 describes a sunscreen lotion bottle i with space-separated integers: SPFi and coveri

Output
A single line with an integer that is the maximum number of cows that can be protected while tanning

Sample Input
3 2
3 10
2 5
1 5
6 2
4 1
Sample Output
2

代码+分析

#include
#include
#include
#include
using namespace std;
/*题解:
(1)有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉。
(2)而刚开始的阳光的强度非常大,奶牛都承受不住,然后奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。
(3)那么为了不让奶牛烫伤,又不会没有效果。
(4)给出了m种防晒霜。每种的数量和固定的阳光强度也给出来了
(5)每个奶牛只能抹一瓶防晒霜,最后问能够享受晒太阳的奶牛有几个。
步骤:
(6)可以将奶牛按照阳光强度的最小值从小到大排序。
(7)将防晒霜也按照能固定的阳光强度从小到大排序

(8)从最小的防晒霜枚举,将所有符合 能忍受阳光强度最小值小于等于该防晒霜的固定阳光强度 的奶牛最大值放入优先队列之中。
(9)然后优先队列是小值先出
(10)所以就可以将这些最大值中的最小的取出来。更新答案。
*/

priority_queueq;//创建一个优先队列 ,用于存放被选中的奶牛:maxspf值

//奶牛可以承受的最低和最高的spf
/而刚开始的阳光的强度非常大,奶牛都承受不住,然后奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。/
struct node1{
//每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值
int minspf;//最小spf值
int maxspf;//最大spf值
}cow[2510];

//防晒霜
struct node2{
int spf; //防晒霜的固定的阳光强度
int num;//防晒霜每种的数量
}sunscreen[2510];

int emp1(node1 a,node1 b){//可以将奶牛按照阳光强度的最小值从小到大排序。
return a.minspf }

int emp2(node2 a,node2 b){//将防晒霜也按照能固定的阳光强度从小到大排序
return a.spf }

int main(){
int n,m; //n:奶牛数目;m:防晒霜种类个数
int i,j=0;//用于控制循环次数的变量
int count=0;//记录有几头奶牛符合可以晒黑而不晒伤
scanf("%d%d",&n,&m);
for(i=0;i scanf("%d%d",&cow[i].minspf,&cow[i].maxspf);
}
for(i=0;i scanf("%d%d",&sunscreen[i].spf,&sunscreen[i].num);
}
//进行排序处理
sort(cow,cow+n,emp1);
sort(sunscreen,sunscreen+m,emp2);

	 for(int i=0;i=sunscreen[i].spf){
			 	count++;
			 	sunscreen[i].num--;
			 } 
		 }
	 }
printf("%d",count);
return 0;

}

你可能感兴趣的:(程序员)