AcWing 6226. 巧夺大奖
原题链接
简单
作者:
著雨
,
2025-03-24 16:54:52
·河北
,
所有人可见
,
阅读 1
贪心(+并查集)
按R从大到小排序,每一次找截止时间之前还可不可能完成,如果可以则放入可以的最晚的地方。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N = 510;
PII a[N];
int p[N];
int res;
int find(int x)
{
return p[x]==x?x:p[x]=find(p[x]);
}
void merge(int x,int y)
{
int a=find(x),b=find(y);
if(a!=b) p[a]=b;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<=n;i++) p[i]=i;
for(int i=0;i<n;i++) cin>>a[i].second;
for(int i=0;i<n;i++) cin>>a[i].first;
sort(a,a+n,greater<PII>());
for(int i=0;i<n;i++)
if(find(a[i].second)!=0) res+=a[i].first,merge(find(a[i].second),find(find(a[i].second)-1));
cout<<res;
return 0;
}