1. 程式人生 > >Supermarket 貪心+並查

Supermarket 貪心+並查

  • Supermarket

  • #include <iostream>
    #include <queue>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    #define maxn 11115
    int n,mxx,j,ans,fa[maxn];
    struct node
    {
        int profit,day;
    } a[maxn];
    int fond(int x)
    {
        return -1==fa[x]?x:fa[x]=fond(fa[x]);
    }
    bool cmp(node x,node y)
    {
        return x.profit>y.profit;
    }
    int main()
    {
        while(cin>>n)
        {
            memset(fa,-1,sizeof(fa));
            for(int i=0; i<n; i++)
                cin>>a[i].profit>>a[i].day;
            sort(a,a+n,cmp);
            ans=0;
            for(int i=0; i<n; i++)
            {
                j=fond(a[i].day);
                if(j>0)
                {
                    ans+=a[i].profit;
                    fa[j]=j-1;
                }
            }
            cout<<ans<<endl;
        }
        return 0;
    }