社区讨论
蒟蒻求助,为什么一排序wa,不排序没事
P1455搭配购买参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo8v94c6
- 此快照首次捕获于
- 2023/10/28 01:07 2 年前
- 此快照最后确认于
- 2023/10/28 01:07 2 年前
CPP
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
ll n,m,w,dp[1001011];
struct NODE
{
int fa,sz;
ll cos,val;
bool operator<(const NODE&x)const
{
if(fa!=x.fa)
{
return fa<x.fa;
}
else
{
return sz>x.sz;
}
}
}node[111111];
int f_ind(int x)
{
return node[x].fa=x==node[x].fa?x:f_ind(node[x].fa);
}
int main()
{
cin>>n>>m>>w;
for(int i=1;i<=n;i++)
{
cin>>node[i].cos>>node[i].val;
node[i].fa=i;
node[i].sz=1;
}
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
int fx=f_ind(x),fy=f_ind(y);
if(fx==fy)continue;
node[fx].sz+=node[fy].sz;
node[fx].cos+=node[fy].cos;
node[fx].val+=node[fy].val;
node[f_ind(y)].fa=node[f_ind(x)].fa;
}
sort(node+1,node+1+n);
cout<<endl<<endl<<endl<<endl;////////////////////
for(int i=1;i<=n;i++)
{
cout<<node[i].fa<<" "<<node[i].sz<<endl;
}
int last=-1;
for(int i=1;i<=n;i++)
{
// if(node[i].fa==last)continue;
// last=node[i].fa;
if(node[i].fa!=i)continue;
for(int j=w;j>=node[i].cos;j--)
{
dp[j]=max(dp[j],dp[j-node[i].cos]+node[i].val);
}
}
cout<<dp[w];
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...