#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
const int N=1e5+10;
int n,m;
struct node{
int x,y;
bool operator <(const node&rhs)const{
return x>rhs.x||(x==rhs.x&&y>rhs.y);}
}ma[N],ta[N];
int can[N];
int main()
{
//freopen("in.txt","r",stdin);
while(~scanf("%d%d",&n,&m))
{
memset(can,0,sizeof(can));
_rep(i,1,n)scanf("%d%d",&ma[i].x,&ma[i].y);
_rep(i,1,m)scanf("%d%d",&ta[i].x,&ta[i].y);
sort(ta+1,ta+m+1);sort(ma+1,ma+n+1);
int cnt=0;
ll ans=0;
int now=1;
_rep(i,1,m)
{
while(now<=n&&ma[now].x>=ta[i].x)can[ma[now].y]++,now++;//标记能完成难度y的机器数量
_rep(j,ta[i].y,100)if(can[j]){can[j]--,cnt++,ans+=500*ta[i].x+2*ta[i].y;break;}
}
printf("%d %lld\n",cnt,ans);
}
return 0;
}
【题解】hdu4864 贪心
最新推荐文章于 2021-02-13 22:28:38 发布