Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
51644 Ender 最优子图 C++ 解答错误 40 675 MS 1248 KB 1032 2022-07-13 12:22:23

Tests(8/20):


#include <iostream> #define ll long long using namespace std; int w[510][510],s[13],n,K; ll ans = 0; void solve() { int i,j; ll res = 0; for(i = 1;i <= n;i++) for(j = i + 1;j <= n;j++) { if(s[i] == s[j]) res+=w[i][j]; else res+=(K - w[i][j]); } ans = max(ans,res); } void DFS(int k) { if(k == n + 1) { bool a1 = 0,a2 = 0; for(int i = 1;i <= n;i++) { if(s[i] == 0) a1 = 1; else a2 = 1; } if(a1&&a2) solve(); return; } s[k] = 0; DFS(k + 1); s[k] = 1; DFS(k + 1); return; } int main() { int i,j,k; cin>>n>>K; if(K == 1) { ans = n * n - 3 * n + 2; cout<<ans / 2<<endl; return 0; } for(i = 1;i <= n;i++) for(j = 1;j <= n;j++) cin>>w[i][j]; if(n <= 20) DFS(1); else { for(i = 1;i <= n;i++) { ll res = 0; for(j = 1;j <= n;j++) { for(k = j + 1;k <= n;k++) { if(j == i||k == i) res+=(K - w[j][k]); else res+=w[j][k]; } } ans = max(ans,res); } } cout<<ans; return 0; }


测评信息: