题面


著名的TSP问题,NPC问题

对于数据大的情况,我们可以使用一系列近似算法进行寻找解。

对于数据规模小的情况,我们可以直接暴力dp

一开始写了一个dfs,然后就被n=20的数据卡爆了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using std::min;
const int maxn=22;
int f[1<<maxn][maxn];
int M[maxn][maxn];
int n;
int dfs(int base,int now)
{
if(base&1==0) return f[base][now]=0x7fffffff;
if(f[base][now]) return f[base][now];
int ans=0x7ffffff;
for(int i=0;i<n;i++)
if(base&(1<<i)&&i+1!=now)
ans=min(ans,dfs(base^(1<<(now-1)),i+1)+M[i+1][now]);
return f[base][now]=ans;
}
int main()
{
scanf("%d",&n);
f[1][1]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&M[i][j]);
if(i==j) M[i][j]=0x7ffffff;
}
for(int i=1;i<=n;i++)
{
M[i][n+1]=M[i][1];
M[n+1][i]=M[1][i];
}
n++;
dfs((1<<n)-1,n);
printf("%d",f[(1<<n)-1][n]-1);
}

然后就回去补了一发递推,还是递推常数小呀。

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using std::min;
const int maxn=20,inf=0x7ffffff;
int f[1<<maxn][maxn];
int M[maxn][maxn];
int n;
int main()
{
memset(f,127,sizeof(f));
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&M[i][j]);
for(int i=0;i<n;i++) M[i][i]=inf;
f[1][0]=0;
for(int i=1;i<(1<<n);i++)
for(int j=0;j<n;j++)
if(i&(1<<j))
for(int k=0;k<n;k++)
if((i&(1<<k))==0)
f[i^(1<<k)][k]=min(f[i^(1<<k)][k],f[i][j]+M[j][k]);
int ans=inf;
for(int i=1;i<n;i++)
ans=min(ans,f[(1<<n)-1][i]+M[i][0]);
printf("%d",ans);
}

感觉dp在noip会是我的大难♂题

最新文章

  1. BulkSqlCopy 批量导入数据(Ef支持)
  2. LeetCode题解——4Sum
  3. lc面试准备:Implement Stack using Queues
  4. Transpose File
  5. http、TCP/IP协议与socket之间的区别
  6. struts2 s:textfield
  7. JNI生成so
  8. iOS基础 - 触摸事件与手势识别
  9. Docker - 用Flannel跨主机
  10. MySQL高级查询(一)
  11. 417 事件、监听、jQuery、轮播手动
  12. [W3bsafe]分享一个爬SQL注入漏洞的工具
  13. linux服务器上配置多个svn仓库
  14. [Leetcode 90]求含有重复数的子集 Subset II
  15. 将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)
  16. JavaScript客户端签名直传OSS
  17. idea配置热部署
  18. CGI编程学习
  19. sencha touch 入门系列 (七)sencha touch 类系统讲解(上)
  20. 网站优化:引用CDN公共库

热门文章

  1. HTML5之WebSocket &amp;&amp; https://zhuanlan.zhihu.com/p/23467317
  2. Apache Beam的目标
  3. 深入理解jQuery插件开发【转】
  4. 新建maven工程index.jsp页面报错
  5. 【linux相识相知】VIM编辑器
  6. 【Linux相识相知】文本处理工具之grep\egrep\fgrep及正则表达式
  7. git本地分支关联远程分支
  8. sql查询时,根据特定的条件给表的某一个字段赋值
  9. 深入理解读写锁—ReadWriteLock源码分析
  10. Portals