UVA1240 ICPC Team Strategy 做题记录

看到 n12,考虑搜索。但是过不去,于是加上记忆化搜索即可。因为 n 不大,选了什么题可以状压进一个数里面。

注意如果你在搜索的时候不判是否满足时间,那么你在 dfs 函数开头判断超时应该返回 1 及以下。

剩下的按照题意模拟即可。

点击查看代码
int n,a[4][maxn];
int ans;
int f[(1<<12)+5][305][4];
int dfs(int S,int t,int lst) {
	if(t>300) return -114514;
	if(f[S][t][lst]!=-1) return f[S][t][lst];
	int ans=0;
	For(j,1,3) {
		if(j!=lst) {
			For(i,1,n) {
				if(!((S>>(i-1))&1))
					ans=max(ans,1+dfs((S|(1<<(i-1))),t+a[j][i],j));
			}
		}
	}
	return (f[S][t][lst]=ans);
}
void work() {
	ans=0;
	in1(n);
	For(i,1,3) For(j,1,n) in1(a[i][j]);
	mem(f,-1);
	cout<<dfs(0,20,0)<<'\n';
}
posted @   coding_goat_qwq  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示