原题
AcWing
思路
对于 m i n S P F minSPF minSPF 排序,然后对于每头牛选择符合条件的 S P F SPF SPF 最大的使用。
代码
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
#define L(i,a,b) for(int i=a;i<=b;++i)
#define in scanf
const int N=2510;
int n,m,res;
map<int,int>spf;
struct COW{
int mins,maxs;
bool operator<(const COW&a)const{
return mins>a.mins;
}
}cow[N];
int main(){
scanf("%d%d",&n,&m);
L(i,1,n)in("%d%d",&cow[i].mins,&cow[i].maxs);
L(i,1,m){
int s,c;
scanf("%d%d",&s,&c);
spf[s]+=c;
}
sort(cow+1,cow+1+n);
spf[0]=spf[5001]=n;
for(int i=1;i<=n;++i){
auto pos=spf.upper_bound(cow[i].maxs);
--pos;
if(pos->first>=cow[i].mins){
++res;
if(--pos->second==0)spf.erase(pos);
}
}
printf("%d",res);
return 0;
}