题目链接:超市购物
分析
使用贪心算法
给价格排序,如果一个货物被选中,其他的就推到第二天
并查集实现这个操作
上代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,fa[100001];
struct lwx
{
int p,d;
}a[100001];
int cmp(lwx a,lwx b)
{
return a.p>b.p;
}
int father(int x)
{
if(fa[x]==x) return x;
else return fa[x]=father(fa[x]);
}
int main()
{
while(cin>>n)
{
int ans=0;
for(int i=1;i<=10000;i++)
{
fa[i]=i;
}
for(int i=1;i<=n;i++)
{
cin>>a[i].p>>a[i].d;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
int t=father(a[i].d);
if(t)
{
ans+=a[i].p;
fa[t]=t-1;
}
}
cout<<ans<<endl;
}
return 0;
}