求调
  • 板块灌水区
  • 楼主Oier_point
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/1/15 14:03
  • 上次更新2025/1/15 18:21:02
查看原帖
求调
1276389
Oier_point楼主2025/1/15 14:03

有 C 头奶牛想晒太阳,第 i 头( 1≤i≤C )奶牛能够忍受 [minSPF i ​ ,maxSPF i ​ ] 区间内的阳光强度,强度太强晒伤,太低没感觉~

现有 L 种兽用防晒霜,第 i 种( 1≤i≤L )有 cover i ​ 瓶,涂一瓶这种防晒霜后,身体接收到的阳光强度就稳定为 SPF i ​ 。

已知每头奶牛至多会选择一种防晒霜且至多涂抹一瓶(多了会中毒…),问:最多可以满足多少头奶牛去晒太阳?

输入描述

第 1 行,两个整数 C,L 接下来 C 行,每行两个整数 minSPF i ​ ,maxSPF i ​ ,表示一头奶牛 接下来 L 行,每行两个整数 SPF i ​ ,cover i ​ ,表示一种防晒霜

【测试数据范围】1≤C,L≤2500,1≤minSPF i ​ ≤maxSPF i ​ ≤1000,1≤SPF i ​ ≤1000,1≤cover i ​ ≤30

输出描述

输出一行一个整数,表示至多有多少头牛能去晒太阳

#include<bits/stdc++.h>
using namespace std;
struct cow
{
	int minn,maxn;
}s[2501];
struct spf
{
	int cover,sl;
}q[2501];
bool cmp1(cow a,cow b)
{
	if (a.maxn==b.maxn) return a.minn<b.minn;
	return a.maxn<b.minn;
}
bool cmp2(spf a,spf b)
{
	return a.sl<b.sl;
}
int main()
{
	int c,l,cnt=0;
	cin>>c>>l;
	for (int i=1;i<=c;i++)
	{
		cin>>s[i].minn>>s[i].maxn;
	}
	for (int i=1;i<=l;i++)
	{
		cin>>q[i].sl>>q[i].cover;
	}
	sort(s+1,s+1+c,cmp1);
	sort(q+1,q+1+l,cmp2);
	for (int j=1;j<=l;j++)
	{
		for (int i=1;i<=c;i++)
		{
			if (q[j].sl>=s[i].minn&&q[j].sl<=s[i].maxn&&q[j].cover>=1)
			{
				q[j].cover--;cnt++;break;
			}
		}
	}
	cout<<cnt;
	return 0;
}
2025/1/15 14:03
加载中...