Sunscreen G

P2887 [USACO07NOV] Sunscreen G

题目描述

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?

有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉。

而刚开始的阳光的强度非常大,奶牛都承受不住,然后奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。

那么为了不让奶牛烫伤,又不会没有效果。

给出了L种防晒霜。每种的数量和固定的阳光强度也给出来了

每个奶牛只能抹一瓶防晒霜,最后问能够享受晒太阳的奶牛有几个。

输入格式

* 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

输出格式

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

输入输出样例 #1

输入 #1

3 2
3 10
2 5
1 5
6 2
4 1

输出 #1

2

代码内容

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll N=1e5+10;

struct node
{
    ll x,y;
}a[N],b[N];

bool cmp(node a,node b)
{
    return a.x>b.x;
}

int main()
{
    ll n,m;
    cin>>n>>m;

    for(ll i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
    for(ll i=1;i<=m;i++) cin>>b[i].x>>b[i].y;

    sort(a+1,a+n+1,cmp);
    sort(b+1,b+m+1,cmp);

    ll cnt=0;
    for(ll i=1;i<=n;i++)
        for(ll j=1;j<=m;j++)
        {
            if(b[j].y>0&&a[i].x<=b[j].x&&a[i].y>=b[j].x)
            {
                cnt++;
                b[j].y--;
                break;
            }
        }

    cout<<cnt<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值