求助,dfs,在CF上第16个点WA
查看原帖
求助,dfs,在CF上第16个点WA
918478
All_Wrong_Answer楼主2024/9/4 21:01

题目: https://www.luogu.com.cn/problem/CF55B

https://codeforces.com/problemset/problem/55/B

代码:

#include <map>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
long long m[10005]; 
long long n[10005];
char a[5];
bool f1[10];
bool f2[10];
long long mina=99999999999999;
void dfs(int n){
	if(n==3){
		for(int i=1;i<=4;i++){
			if(f1[i]==false){
				mina=min(mina,m[i]);
				return ;
			}
		}
	}
	for(int i=1;i<=4;i++){
		for(int j=1;j<=4;j++){
			if(f1[i]==false&&f1[j]==false&&i!=j){
				f1[j]=true;
				for(int k=1;k<=3;k++){
					if(f2[k]==false){
						if(a[k]=='+'){
							long long u=m[i];
							m[i]=(m[i]+m[j]);
							f2[k]=true;
							dfs(n+1);
							f2[k]=false;
							m[i]=u;
						}
						else{
							long long v=m[i];
							m[i]=(m[i]*m[j]);
							f2[k]=true;
							dfs(n+1);
							f2[k]=false;
							m[i]=v;
						}
					}
				}
				f1[j]=false;
			} 
		}
	}
}
int main() {
	cin>>m[1]>>m[2]>>m[3]>>m[4];
	cin>>a[1]>>a[2]>>a[3];
	dfs(0);
	cout<<mina;
	return 0;
}
2024/9/4 21:01
加载中...