为什么记忆化也会TLE
  • 板块P1464 Function
  • 楼主jiezecheng
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/9/8 11:55
  • 上次更新2024/9/8 15:30:04
查看原帖
为什么记忆化也会TLE
1177184
jiezecheng楼主2024/9/8 11:55

我个人觉得自己理解了题解,但是这个代码怎么调都是 Subtack 1 两个点全 TLE ,剩下全对

#include<bits/stdc++.h>
using namespace std;
int ans[25][25][25];
int w(long long a,long long b,long long c);
int find(long long a,long long b,long long c){
	if(ans[a][b][c]==0){
		ans[a][b][c]=w(a,b,c);
	}
	return ans[a][b][c];
}

int w(long long a,long long b,long long c){
	if(a<=0 or b<=0 or c<=0){
		return 1;
	}
	if(a>20 or b>20 or c>20){
		if(ans[20][20][20]!=0){
			return ans[20][20][20];
		}else{
			return w(20,20,20);
		}
	}
	if(a<b and b<c){
		ans[a][b][c]=find(a,b,c-1)+find(a,b-1,c-1)-find(a,b-1,c);
		return ans[a][b][c];
	}
	ans[a][b][c]=find(a-1,b,c)+find(a-1,b-1,c)+find(a-1,b,c-1)-find(a-1,b-1,c-1);
	return ans[a][b][c];
	
}
int main(){
	while(1){
		int a,b,c;
		cin>>a>>b>>c;
		if(a==-1 and b==-1 and c==-1) return 0;
		cout<<"w("<<a<<", "<<b<<", "<<c<<')'<<" = "<<w(a,b,c)<<endl;
	}
} 
2024/9/8 11:55
加载中...