社区讨论
求助,TLE两个点
P1171售货员的难题参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo2ikxmc
- 此快照首次捕获于
- 2023/10/23 14:26 2 年前
- 此快照最后确认于
- 2023/10/23 14:26 2 年前
为什么一直TLE,通过代码公开计划我看其他人比我常数还大一点,他能直接过
CPP#include<bits/stdc++.h>
using namespace std;
#define Min(a,b) a>b?b:a
const int N=1<<20,M=21,INF=0x3f3f3f3f;
int f[M][N];
int n,ans;
int g[M][M];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
cin>>g[i][j];
}
int size=1<<n;
// for(int i=1;i<=n;++i)
// {
// for(int j=1;j<size;++j)
// f[i][j]=INF;
// }
memset(f,0x3f,sizeof f);
ans=INF;
f[1][1]=0;
for(int k=2 ; k< size ; ++k)
{
for(int i=1 ;i<=n ; ++i) //起点
{
if(k&(1<<i-1)==0) continue;
for(int j=2;j<=n;++j) //终点
{
if(i==j) continue;
if(k&(1<<j-1)==0) continue;
f[j][k]=Min( f[j][k] , f[i][k^(1<<j-1)]+g[i][j]);
}
}
}
for(int i=2;i<=n;i++)
{
ans=Min(ans,f[i][size-1]+g[i][1]);
}
cout<<ans<<endl;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...