为什么第二个点TLE,第十个点RE???

P1171 售货员的难题

不要想了,我优化完了第10个测点还是挂 ```cpp #include <cstdio> #define min(a , b) ((a) < (b) ? (a) : (b)) using namespace std; #define N 21 int f[1<<(N-2)][N-1]; int map[N][N]; int n; int main() { scanf("%d",&n); for(int i=1;i<n;i++) { for(int j=1;j<(1<<(n-1));j++) { f[j][i]=1<<30; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%d",&map[i][j]); } if(i!=1) { f[1<<(i-2)][i-1]=map[1][i]; } } for(int S=3;S<(1<<(n-1));S++) { for(int i=2;i<=n;i++) { if(S&(1<<(i-2))) { for(int j=2;j<=n;j++) { if(S&(1<<(j-2))&&i!=j) { int s=S^(1<<(j-2)); f[S][j-1]=min(f[S][j-1],f[s][i-1]+map[i][j]); } } } } } int ans=1<<30; for(int i=2;i<=n;i++) { ans=min(f[(1<<(n-1))-1][i-1]+map[i][1],ans); } printf("%d\n",ans); return 0; } ```
by Winniechen @ 2017-08-28 19:45:13


|