P2887 [USACO07NOV] Sunscreen G

原题链接

题解

1.题目可以抽象转化为,若干个点和线段,求问最多有多少点和线段能配对,如果点在线段内

2.我们可以采用贪心的方法,对点升序排序,对线段按右端点升序排序
为什么请看下图

code

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int l,r,chose;
}cow[2505];
struct node2
{
    int x,c;
}sh[2505];
bool cmp1(node a,node b)
{
    if(a.r!=b.r) return a.r<b.r;
    return a.l<b.l;
}

bool cmp2(node2 a,node2 b)
{
    return a.x<b.x;
}
int main()
{
    int c,l;
    cin>>c>>l;
    for(int i=1;i<=c;i++)
    {
        cin>>cow[i].l>>cow[i].r;
        cow[i].chose=0;
    }
    for(int i=1;i<=l;i++) cin>>sh[i].x>>sh[i].c;

    sort(cow+1,cow+1+c,cmp1);
    sort(sh+1,sh+1+l,cmp2);

    int ans=0;

    for(int i=1;i<=l;i++)
    {
        for(int j=1;j<=c;j++)
        {
            int x=sh[i].x;
            if(cow[j].l<=x&&x<=cow[j].r&&sh[i].c&&!cow[j].chose)
            {
                cow[j].chose=1;
                sh[i].c--;
                ans++;
            }
            if(sh[i].c==0) break;
        }
    }


    cout<<ans;
    return 0;
}

posted @   纯粹的  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示