o2优化与正确性
  • 板块学术版
  • 楼主shensiyuan2011
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/8/11 10:45
  • 上次更新2023/10/27 15:59:58
查看原帖
o2优化与正确性
653212
shensiyuan2011楼主2022/8/11 10:45

洛谷在所有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;
}

哪位能来解释一下

2022/8/11 10:45
加载中...