建议增强数据
查看原帖
建议增强数据
689640
Michael2012楼主2024/7/26 11:10

这题标签是状态压缩和记忆化搜索,但是我暴搜竟然过了!!

我的代码:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 10 , INF = 1e9;
int id[130],n = 5 , m , a[N][N];
vector <int> e[N][N];
int dfs(int x){
	int ret = 0;
	for (int i = 1;i <= n;i++){
		if (e[x][i].size() > a[x][i]){
			int w = e[x][i][a[x][i]];
			++a[x][i];
			ret = max(ret , w + dfs(i));
			--a[x][i];
		}
	}
	return ret;
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	id['A'] = 1;
	id['E'] = 2;
	id['I'] = 3;
	id['O'] = 4;
	id['U'] = 5;
	cin >> m;
	string s;
	for (int i = 1;i <= m;i++){
		cin >> s;
		e[id[s[0]]][id[s[s.size() - 1]]].push_back(s.size());
	}
	for (int i = 1;i <= n;i++){
		for (int j = 1;j <= n;j++){
			sort(e[i][j].begin() , e[i][j].end() , greater <int>());
		}
		e[0][i].push_back(0);
	}
	cout << dfs(0);
	return 0;
}

最慢的点43ms,总用时83ms,甚至比题解的某些状态压缩还快。我认为至少要把暴力卡掉吧?

2024/7/26 11:10
加载中...