- [P1433 吃奶酪](https://www.luogu.com.cn/problem/P1433)

换一种类型,这次求长度最小值,(n<15)接着状压

题目:房间里放着 nn 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0)(0,0) 点处。

梳理状态:1吃了几个,2吃了哪几个 (dp[i个][吃完第i个是什么状态])

写出递推式

dp[j][i]=min(dp[j][i],dp[p][i-(1<<(j-1))]+a[p][j]);
//当前距离  p:上一个是哪个点  i-(1<<(j-1)):上一个状态 a[p][j]距离

思路:先求出任意两点间距离,按照状态选择结束启示两点进行遍历。

for(int i=1;i<(1<<n);i++){for(int j=1;j<=n;j++){if(i&(1<<(j-1))==0)continue;for(int p=1;p<=n;p++){if(p==j)continue;else if((i&(1<<(p-1)))==0){continue;}dp[j][i]=min(dp[j][i],dp[p][i-(1<<(j-1))]+a[j][p]);}}}

别忘了初始化,最后给出ac代码

#include<bits/stdc++.h>
using namespace std;
double a[20][20];
double vx[20],vy[20];
double dp[16][20005];
double dis(int p1,int p2){return sqrt((vx[p1]-vx[p2])*(vx[p1]-vx[p2])+(vy[p1]-vy[p2])*(vy[p1]-vy[p2]));
}
int main(){double ans=1000000005;//这个有点呆qwqint n;cin>>n;memset(dp,127,sizeof(dp));//初始化最大值for(int i=1;i<=n;i++){cin>>vx[i];cin>>vy[i];}for(int i=0;i<=n;i++){for(int j=i+1;j<=n;j++){a[i][j]=dis(i,j);a[j][i]=a[i][j];}}for(int i=1;i<=n;i++){dp[i][(1<<(i-1))]=a[0][i];//先走第一步}for(int i=1;i<(1<<n);i++){//状态for(int j=1;j<=n;j++){//当前位置if(i&(1<<(j-1))==0)continue;//没走这点for(int p=1;p<=n;p++){//上一个位置if(p==j)continue;else if((i&(1<<(p-1)))==0){//没有走这点continue;}dp[j][i]=min(dp[j][i],dp[p][i-(1<<(j-1))]+a[j][p]);//按照状态优化每一条边}}}for(int i=1;i<=n;i++){ans=min(ans,dp[i][(1<<n)-1]);//最后遍历每一个结束点}cout<<setiosflags(ios::fixed);cout<<setprecision(2)<<ans;
}

【每日一题】洛谷 p1433 吃奶酪 状压dp相关推荐

  1. P1433 吃奶酪(状压dp)

    洛谷 / 题目列表 / 题目详情 P1433 吃奶酪 提交 23.28k 通过 9.30k 时间限制 1.00s 内存限制 125.00MB 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问 ...

  2. 洛谷 P1433 吃奶酪

    这一题用到了状态压缩.然后接下来可以用 dp 或 dfs. 一开始我用的是 dp,不会,然后看题解,dp 写完感觉脑子糊糊的,于是打算写写 dfs. dfs 优化后还是 WA 了一个点,然后又跑去看大 ...

  3. 洛谷P1433 吃奶酪--Java解法(货郎担问题)

    洛谷P1433 吃奶酪–Java解法(货郎担问题) 题目链接 解决思想 本题目是一个典型的货郎担问题,即从(0,0)点出发,所有点仅经过依次(我们可以用反证法证明如果有一个点经过两次其路径一定比每个点 ...

  4. 洛谷 P1433 吃奶酪 dfs剪枝

    洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...

  5. 洛谷P1433 吃奶酪

    题链 排列 的 装压 两个同类型的状压 No Change G 邦邦的大合唱站队 题目描述 房间里放着 n 块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0)点处. 输入格 ...

  6. 洛谷P1433 吃奶酪【dfs】【剪枝】

    题目:https://www.luogu.org/problemnew/show/P1433 题意: 给定n个坐标,要求从(0,0)开始走遍所有点,最少经过的路程. 思路: 刚开始想像数字三角形一样适 ...

  7. 洛谷 - P1433 - 吃奶酪 - dfs

    https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...

  8. 每日一题——洛谷 P1551 亲戚 (并查集)

    大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...

  9. 洛古——P1433 吃奶酪

    https://www.luogu.org/problem/show?pid=1433 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输 ...

最新文章

  1. -bash: fultter: command not found
  2. 生命游戏 c语言,c++生命游戏源码
  3. python爬取网页有乱码怎么解决_python - 爬虫获取网站数据,出现乱码怎么解决。...
  4. 1.4 isAlive()方法
  5. 前端为什么有的接口明明是成功回调却执行了.catch失败回调_前端进阶高薪必看-手写源码篇(高频技术点)...
  6. hbase java api最新版本_HBase基本命令与新版本Java API
  7. GoldenGate组态(四)它veridata组态
  8. java基础教程知识点,[Java教程]js基础知识点总结
  9. iOS之CATiledLayer的属性简介和使用
  10. c语言修改内存字节,要开学了,小白给大家一个C语言修改dnf内存的示范代码
  11. OFFICE技术讲座:制表键(TAB)对段落布局的影响
  12. 【2019杭电多校第五场1002=HDU6625】three arrays(01字典树+思维+贪心)
  13. java版spring cloud+spring boot+redis社交电子商务平台-docker-feign配置(五)
  14. 中国独角兽上市潮,爱奇艺优信小米值得投资吗?
  15. @Transaction注解详解
  16. 二级域名设置解析方法
  17. mysql中explain执行结果各个字段的意思
  18. (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!
  19. tp6动态连接数据库
  20. 安卓系统高德怎么定位服务器,怎么使用高德地图定位和导航功能?

热门文章

  1. 小程序的 生命周期回调函数onLoad,onReady,onShow
  2. 怎么才能学好日语语法
  3. 【Unity编辑器扩展】(一)PSD转UGUI Prefab, Aspose.PSD和Harmony库的使用
  4. 虹软人脸识别DEMO
  5. 【C语言】分支语句(选择结构)
  6. Apache web服务的学习与应用
  7. soapUI模拟推送报文时提示:前言中不允许有内容
  8. C++第12周项目6——太乐了!
  9. SQL--盲注和宽字节注入
  10. arm开发板使用fio测试磁盘读写速度