社区讨论

已 AC,求助:本地跑得奇慢无比

P6637 「JYLOI Round 1」树的平衡参与者 5已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@lp2ja2kv
此快照首次捕获于
2023/11/17 19:25
2 年前
此快照最后确认于
2023/11/17 20:44
2 年前
查看原帖
代码很短。
CPP
#include <iostream>
#include <cmath>

using namespace std;

const int N=2003;
const long long INF=1000000000000ll;

int n; 
long long f[N][N];
bool vis[N][N];

long long dp(int x,int h) {
	if(h<int(ceil(log2(x+1))) || h>x)
		return INF;
	if(vis[x][h])
		return f[x][h];
	
	vis[x][h]=true;
	for(int i=1;i<=x/2;i++) {
		long long tmp=dp(x-i-1,h-1);
		f[x][h]=min(f[x][h],min(dp(i,h-1)+tmp+i,dp(i,h-2)+tmp+i));
	}
	
	return f[x][h];
}

int main() {
	ios::sync_with_stdio(false);
	
	cin>>n;
	
	for(int i=0;i<=n;i++)
		for(int j=0;j<=n;j++)
			f[i][j]=INF;
	
	vis[1][1]=vis[2][2]=true;
	f[1][1]=f[2][2]=0;
	
	long long ans=INF;
	for(int i=1;i<=n;i++)
		ans=min(ans,dp(n,i));
	cout<<ans<<endl;
}
n=2000n=2000 在学校电脑上跑了 3min 才出结果,抱着试一试的心态交了一发,开不开 O2 都跑得飞快,直接过了。
想知道是触发了什么 UB 还是学校电脑太差。编译器是 MinGW64 11.2.0,电脑配置是 Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz 3.40 GHz,4GB RAM(其实我不会看)。

回复

11 条回复,欢迎继续交流。

正在加载回复...