NC15832 Most Powerful
题目
题目描述
Recently, researchers on Mars have discovered N powerful atoms. All of them are different. These atoms have some properties. When two of these atoms collide, one of them disappears and a lot of power is produced. Researchers know the way every two atoms perform when collided and the power every two atoms can produce.
You are to write a program to make it most powerful, which means that the sum of power produced during all the collides is maximal.
输入描述
There are multiplecases. The first line of each case has an integer N (2 <= N <= 10), whichmeans there are N atoms: A1, A2, ... , AN.Then N lines follow. There are N integers in each line. The j-th integer on thei-th line is the power produced when Ai and Aj collidewith Aj gone. All integers are positive and not larger than 10000.The last case isfollowed by a 0 in one line.There will be no morethan 500 cases including no more than 50 large cases that N is 10.
输出描述
Output the maximalpower these N atoms can produce in a line for each case.
示例1
输入
2 0 4 1 0 3 0 20 1 12 0 1 1 10 0 0
输出
4 22
题解
知识点:状压dp。
经典的TSP问题。这道题由于可以随便找一个 撞随便一个 ,所以没必要记录上一个原子是啥,设 表示状态 的最大值。由于 撞 只会消失 并得到 的能量,因此 (编号 )要满足状态中没用过, (编号 )满足状态中用过,于是有转移方程:
用记忆化搜索也能写。
时间复杂度
空间复杂度
代码
#include <bits/stdc++.h> using namespace std; int n; int g[17][17]; int dp[1 << 11]; int dfs(int st) { if (~dp[st]) return dp[st]; for (int i = 1;i <= n;i++) { if ((st >> (i - 1)) & 1) continue; for (int j = 1;j <= n;j++) { if (!((st >> (j - 1)) & 1)) continue; dp[st] = max(dp[st], dfs(st ^ (1 << (j - 1))) + g[i][j]); } } return dp[st]; } int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); while (cin >> n, n) { for (int i = 1;i <= n;i++) for (int j = 1;j <= n;j++) cin >> g[i][j]; memset(dp, -1, sizeof(dp)); int ans = 0; dp[0] = 0; for (int i = 1;i <= n;i++) { ans = max(ans, dfs(((1 << n) - 1) ^ (1 << (i - 1)))); } cout << ans << '\n'; } return 0; }
本文来自博客园,作者:空白菌,转载请注明原文链接:https://www.cnblogs.com/BlankYang/p/16652306.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧