結果
| 問題 | 
                            No.519 アイドルユニット
                             | 
                    
| コンテスト | |
| ユーザー | 
                             どらら
                         | 
                    
| 提出日時 | 2017-05-28 22:49:03 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                TLE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 784 bytes | 
| コンパイル時間 | 1,603 ms | 
| コンパイル使用メモリ | 166,624 KB | 
| 実行使用メモリ | 29,824 KB | 
| 最終ジャッジ日時 | 2024-09-21 15:43:09 | 
| 合計ジャッジ時間 | 6,020 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | TLE * 1 -- * 33 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define REP(i,a,n) for(int i=(a); i<(int)(n); i++)
#define rep(i,n) REP(i,0,n)
#define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)
#define ALLOF(c) (c).begin(), (c).end()
typedef long long ll;
typedef unsigned long long ull;
#define INF 100000000
int N;
int cost[30][30];
int dp[1<<25];
int solve(ll S){
  if(S == 0) return 0;
  if(dp[S]>0) return dp[S];
  
  int ret = 0;
  rep(i,N) if((S>>i)&1){
    REP(j,i+1,N) if(((S>>j)&1)){
      ret = max(ret, cost[i][j] + solve(S - (1<<i) - (1<<j)));
    }
  }
  
  return dp[S] = ret;
}
int main(){
  cin >> N;
  rep(i,N){
    rep(j,N){
      cin >> cost[i][j];
      if(i==j) cost[i][j] = -INF;
    }
  }
  cout << solve((1LL<<N)-1) << endl;
  return 0;
}
            
            
            
        
            
どらら