【luogu】 P1433 吃奶酪
来源:互联网 发布:免费nba直播软件 编辑:程序博客网 时间:2024/04/27 19:36
题目描述
房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。输入格式:
第一行一个数n (n<=15)
接下来每行2个实数,表示第i块奶酪的坐标。
两点之间的距离公式=sqrt((x1-x2) * (x1-x2)+(y1-y2) * (y1-y2))输出格式:
一个数,表示要跑的最少距离,保留2位小数。
原题戳这里
深搜,记录上一个点和已经吃了多少块奶酪,再立一个flag,防止一块奶酪吃很多次
再就是剪枝,不剪枝会超时,如果距离已经大于了最小值,就不必继续进行计算了,然后轻松AC
#include <iostream>#include <cmath>#include <cstdio>using namespace std;double ds,minn=9999.0,dis[20][20],d[20][2];int n,f[20];void dfs(int l,int tot){ if(tot==n&&minn>ds) { minn=ds; return ; } else if(tot==n) return ; for(int i=1;i<=n;i++) { if(f[i]==0) { f[i]=1; ds+=dis[l][i]; if(ds<minn) dfs(i,tot+1); f[i]=0; ds-=dis[l][i]; } }}int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>d[i][1]>>d[i][2]; for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) dis[i][j]=sqrt((d[j][1]-d[i][1])*(d[j][1]-d[i][1])+(d[j][2]-d[i][2])*(d[j][2]-d[i][2])); dfs(0,0); printf("%.2lf",minn); return 0;}
0 0
- 【luogu】 P1433 吃奶酪
- P1433 吃奶酪
- 洛谷 P1433 吃奶酪
- 洛谷P1433 吃奶酪
- P1433 吃奶酪
- P1433 吃奶酪
- |洛谷|DFS|P1433 吃奶酪
- 洛谷 P1433 吃奶酪 (dfs)
- 洛谷P1433 吃奶酪(dfs)
- 【搜索】洛谷 P1433 吃奶酪
- 10.1做题——洛谷P1433 吃奶酪
- 吃奶酪
- 老鼠吃奶酪。
- 老鼠吃奶酪
- luogu P2979 [USACO10JAN]奶酪塔Cheese Towers
- [LUOGU]P1508 Likecloud-吃、吃、吃
- 洛谷 1433_吃奶酪_dfs
- 洛谷 1433 吃奶酪 dfs+剪枝
- 自定义ImageLoader实现GridView加载图片
- Spring中配置线程池ThreadPoolExecutor参考
- 一步步手动实现热修复(三)-Class文件的替换
- bug修复-fragment setArguments报错
- 19 原 Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
- 【luogu】 P1433 吃奶酪
- EGSnrc 安装tips for Ubuntu
- c语言趣味编程100例——排序
- Python:模拟登陆与HTTP协议(1)
- 1005. 继续(3n+1)猜想 (25)
- leetcode(68).242. Valid Anagram
- Activity启动流程,界面绘制到事件处理的整个流程(基于Android6.0源码)(2)
- Sliding Window Maximum
- node.js使用cheerio制作网络爬虫