救救孩子吧!数组开多大啊
  • 板块P1464 Function
  • 楼主yjjh
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/3 10:33
  • 上次更新2024/7/3 13:54:48
查看原帖
救救孩子吧!数组开多大啊
1036002
yjjh楼主2024/7/3 10:33
#include <bits/stdc++.h>
using namespace std;
long long ww[300][300][300];//这里是记忆化数组(250 A一个  300 MLE了 awa)
inline long long w(long long a,long long b,long long c){
	if(ww[a][b][c]!=-1)return ww[a][b][c];
	if(a<=0||b<=0||c<=0){
		ww[a][b][c]=1;
		return 1;
	}
	if(a>20||b>20||c>20){
		long long t=w(20,20,20);
		ww[a][b][c]=t;
		return t;
	}
	if(a<b&&b<c){
		long long t=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
		ww[a][b][c]=t;
		return t;
	}
	long long t=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
	ww[a][b][c]=t;
	return t;
}
int main(){
	memset(ww,-1,sizeof(ww));
	long long a,b,c;
	while(1){
		std::cin >>a>>b>>c;
		if(a==-1&&b==-1&&c==-1)return 0;
		std::cout <<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<std::endl;
	}
}
2024/7/3 10:33
加载中...