疑似在线 IDE bug,求 kkk 解答
  • 板块工单反馈版
  • 楼主ny_Dacong
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/12/14 19:46
  • 上次更新2023/12/14 21:54:05
查看原帖
疑似在线 IDE bug,求 kkk 解答
928972
ny_Dacong楼主2023/12/14 19:46

在完成P2170时,本人提交了下面这个代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,k,tpa,tpb,tot = 1;
int father[20010],p[20010],v[20010],dp[40010];
int getfather(int x){
	if(father[x] == x){
		return x;
	}
	father[x] = getfather(father[x]);
	return father[x];
}
void marge(int a,int b){
	a = getfather(a);
	b = getfather(b);
	if(a == b){
		return;
	}
	father[b] = a;
	p[a] += p[b];
}
int main(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i = 1; i <= n+5; i++){
		father[i] = i;
		p[i] = 1;
	}
	for(int i = 1; i <= k; i++){
		scanf("%d%d",&tpa,&tpb);
		marge(tpa,tpb);
	}
	for(int i = 1; i <= n; i++){
		if(father[i] == i){
			v[tot] = p[i];
			tot++;
		}
	}
	for(int i = 1; i <= tot; i++){
		for(int j = 2*m; j >= v[i]; j--){
			dp[j] = max(dp[j],dp[j-v[i]]+v[i]);
		}
	}
	int Min = 1000000005,ans;
	for(int i = 1; i <= 2*m; i++){
		if(Min > abs(dp[i]-m)){
			Min = abs(dp[i]-m);
			ans = dp[i];
		}
	}
	printf("%d",ans);
	return 0;
}

发现 #8 WA,于是下载数据。

本地运行正常输出0,于是我在在线 IDE 上运行。

将代码和数据都拷贝到 IDE 后,运行发现,每一次运行结果都不一样。 没有开 O2,语言 C++11,输出在 3000~5000 左右。请问这是什么原因?求解。

2023/12/14 19:46
加载中...