結果
問題 |
No.519 アイドルユニット
|
ユーザー |
![]() |
提出日時 | 2025-03-15 15:40:49 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 963 bytes |
コンパイル時間 | 2,035 ms |
コンパイル使用メモリ | 192,320 KB |
実行使用メモリ | 83,384 KB |
最終ジャッジ日時 | 2025-03-15 15:40:56 |
合計ジャッジ時間 | 6,831 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 33 |
ソースコード
#include<bits/stdc++.h> //#define int long long //#define eps 1e-9 //#define ENF 1e13 using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-48;ch=getchar();} return x*f; } void write(int x) { if(x<0)putchar('-'),x=-x; if(x<10)putchar(x+'0'); else write(x/10),putchar(x%10+'0'); } const int N=1e2; const int mod=1e9+7; int n; int a[N][N]; int dp[1<<(25)]; bool cal(int z){ int sum=0; while(z){ if(z&1)sum++; z>>=1; } return sum&1; } signed main(){ n=read(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=read(); for(int i=0;i<(1<<n);i++){ if(cal(i))continue; for(int j=1;j<=n;j++){ if(i&(1<<(j-1)))continue; for(int k=1;k<=n;k++){ if(i&(1<<(k-1)))continue; dp[(i|(1<<(j-1)))|(1<<(k-1))]=max(dp[i]+a[j][k],dp[(i|(1<<(j-1)))|(1<<(k-1))]); } } } cout<<dp[(1<<n)-1]<<"\n"; return 0; }