社区讨论
爆零求调
P2792[JSOI2008] 小店购物参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo10goy6
- 此快照首次捕获于
- 2023/10/22 13:11 2 年前
- 此快照最后确认于
- 2023/11/02 12:40 2 年前
#include<bits/stdc++.h>
using namespace std;
int n,k,f[51];
double cnt=0;
bool vis[51]={0};
struct ddd{
double c;
int m;
}a[51];
struct dd{
int A,B;
double P;
}b[501];
int check(int l){
if(f[l]==l)return l;
return f[l]=check(f[l]);
}
bool cmp(dd l,dd p){
return l.P*(a[l.B].c-a[l.B].m)>p.P*(a[p.B].c-a[p.B].m);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].c>>a[i].m;
cin>>k;
for(int i=0;i<k;i++)cin>>b[i].A>>b[i].B>>b[i].P;
sort(b,b+k,cmp);
for(int i=1;i<=k;i++)f[i]=i;
for(int i=0;i<k;i++){
int u=check(b[i].A),v=check(b[i].B);
if(u==v)continue;
f[u]=v;
cnt+=(a[b[i].B].m*b[i].P);
vis[b[i].B]=1;
}
for(int i=1;i<=n;i++)if(vis[i]==0)cnt+=(a[i].c*a[i].m);
printf("%.2f",cnt);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...