洛谷在所有P....的题目中提供了O2优化(选入比赛的除外)。
都知道,O2能优化代码,提高运行效率。
但今天,我做
P1171 售货员的难题
这道题时,开了O2,于是得到90分
,关掉O2这题就过了
。
#include<bits/stdc++.h>
using namespace std;
int dis[21][21],dp[(1<<20)-1][21],ans=20001;
int main(){
ios::sync_with_stdio(false);
register int n;
cin>>n;
register int maxn=(1<<n)-1;
for (register int i=0;i<n;i++)
for (register int j=0;j<n;j++)cin>>dis[i][j];
for (register int i=0;i<=maxn;i++)
for (register int j=0;j<n;j++)dp[i][j]=20000;
dp[maxn][0]=0;
for (register int i=maxn-1;i;i-=2)
for (register int j=0;j<n;j++)
if (i>>j&1)
for (register int k=0;k<n;k++)
if (!(i>>k&1))dp[i][j]=min(dp[i][j],dp[1<<k|i][k]+dis[j][k]);
for (register int i=1;i<n;i++)ans=min(ans,dp[1<<i][i]+dis[0][i]);
cout<<ans;
return 0;
}
哪位能来解释一下