已 AC,求助:本地跑得奇慢无比
查看原帖
已 AC,求助:本地跑得奇慢无比
427154
unsigned_short_int楼主2023/11/17 19:24

代码很短。

#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(其实我不会看)。

2023/11/17 19:24
加载中...