一个简单的货郎担问题,用状态压缩dp可以解决;

解法:

d(i,S)=min{d(j,S-{j})+dis(i,j) | j belongs to S};

边界条件:d(i,{})=dis(0,i).

最终答案:d(0,{1,2,3```n-1})

时间复杂度:O(n^2*2^b);

代码:

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int dp[][],dis[][],posx[],posy[]; int main()
{
int t,x,y,n;
scanf("%d",&t);
while(t--)
{
memset(dis,,sizeof dis);
scanf("%d%d",&x,&y);
scanf("%d%d",&posx[],&posy[]);
scanf("%d",&n);
for(int i=; i<=n; i++)
scanf("%d%d",&posx[i],&posy[i]);
for(int i=; i<=n; i++)
for(int j=; j<i; j++)
dis[i][j]=dis[j][i]=abs(posx[i]-posx[j])+abs(posy[i]-posy[j]);
memset(dp,0x1f,sizeof dp);
for (int i=; i<(<<n); ++i)
for (int j=; j<=n; ++j)
{
dp[<<j][j]=dis[][j];
if(i&(<<j))
for (int k=; k<=n; ++k)
{
if((i-(<<j))&(<<k))
dp[i][j]=min(dp[i-(<<j)][k]+dis[k][j],dp[i][j]);
}
}
int ans=dp[(<<n)-][];
for(int i=; i<=n; i++)
ans=min(dp[(<<n)-][i]+dis[i][],ans);
printf("The shortest path has length %d\n",ans);
}
return ;
}

uva 10496 Collecting Beepers的更多相关文章

  1. UVA 12510/CSU 1119 Collecting Coins DFS

    前年的省赛题,难点在于这个石头的推移不太好处理 后来还是看了阳神当年的省赛总结,发现这个石头这里,因为就四五个子,就暴力dfs处理即可.先把石头当做普通障碍,进行一遍全图的dfs或者bfs,找到可以找 ...

  2. POJ2096 Collecting Bugs

    Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 5090   Accepted: 2529 Case Time Limit: ...

  3. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  4. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  5. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  6. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  7. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  8. UVA数学入门训练Round1[6]

    UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...

  9. UVA - 1625 Color Length[序列DP 代价计算技巧]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

随机推荐

  1. DNS的查找机制、中文扩展,及其对手机扫描商标名称的支持

    DNS的查找机制.中文扩展.及其对手机扫描商标名称的支持 DNS的查找机制 当DNS查找主机时,它首先在本域里查找,假设找不到则交给更上一级的域查找,直至顶级的域. 因此,假设计算机在北大域名(pku ...

  2. keepalive support-----Programming applications

    TCP Keepalive HOWTO Prev   Next 4. Programming applications This section deals with programming code ...

  3. display_errors & error_reporting(php调试安全)

    这两个选项对应的值即都可以在php.ini文件中设置,也都可以在php代码中使用相应的函数来设置. 在php.ini文件中的设置如下:

  4. iOS Runtime 实践(1)

    很多时候我们都在看iOS开发中的黑魔法——Runtime.懂很多,但如何实践却少有人提及.本文便是iOS Runtime的实践第一篇. WebView 我们这次的实践主题,是使用针对接口编程的方式,借 ...

  5. 关于weight属性使用的一些细节

    之前被这个属性困扰过好久,今天一个偶然的机会,终于把这个搞清楚了,现在与大家分享一下. 假设我们要在一个LinearLayout布局中显示两个按钮,button1和button2,button2的宽度 ...

  6. CentOS 6.7安装Java JDK

    1.下载Java JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  7. 父页面iframe自动适应子页面的宽高度

    <script type="text/javascript"> function load(){ parent.document.getElementById(&quo ...

  8. CCProcxy代理服务器的配置使用

    资源准备及设置 1.资源:http://www.ccproxy.com/ 下载官方正式版本. 2.解压之后打开,界面如下: 打开“设置”,如图做设置,点击确定: 打开“账号”: 点击新建,在ip地址/ ...

  9. Js 上传文件 页面不刷新

    html控件代码: <form id="form1"> <p><input type="file" name="mfil ...

  10. Javascript基础学习(3)_对象和数组

    一.对象是一种无序的属性集合,每个属性都有自己的名字和值. 1.创建对象 花括号内逗号分隔 var person = { "Name" : "LiCheng", ...