当前位置: 首页 > news >正文

题解:洛谷 P1433 吃奶酪

【题目来源】

洛谷:P1433 吃奶酪 - 洛谷

【题目描述】

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

【输入】

第一行有一个整数,表示奶酪的数量 \(n\)

\(2\) 到第 \((n+1)\) 行,每行两个实数,第 \((i+1)\) 行的实数分别表示第 \(i\) 块奶酪的横纵坐标 \(x_i,y_i\)

【输出】

输出一行一个实数,表示要跑的最少距离,保留 \(2\) 位小数。

【输入样例】

4
1 1
1 -1
-1 1
-1 -1

【输出样例】

7.41

【解题思路】

image

【算法标签】

《洛谷 P1433 吃奶酪》 #动态规划,dp# #状态压缩#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 定义点结构体
struct point
{double x, y;    // 点的坐标bool visit;     // 是否已访问int num;        // 点的编号
} ps[16];           // 最多15个点(编号0-15)int n;              // 点的数量
double ans = DBL_MAX; // 存储最短路径长度,初始为最大值
double f[16][33000] = {0}; // 记忆化数组,f[i][j]表示状态j下到达点i的最短距离/*** 计算两点间距离* @param p1 第一个点* @param p2 第二个点* @return 两点间距离*/
double dis(point p1, point p2)
{return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}/*** 深度优先搜索函数* @param p 当前点* @param step 已访问的点数* @param mark 状态标记(二进制位表示已访问的点)* @param s 当前路径长度*/
void dfs(point p, int step, int mark, double s)
{// 所有点都已访问,更新最短路径if (step == n){if (ans > s){ans = s;}return;}// 尝试访问每个未访问的点for (int i = 0; i < n; i++){if (ps[i].visit){continue;}int tmp = mark + (1 << i); // 更新状态标记// 如果新状态更优,则继续搜索if (f[i][tmp] == 0 || f[i][tmp] > f[p.num][mark] + dis(ps[i], p)){f[i][tmp] = f[p.num][mark] + dis(ps[i], p);ps[i].visit = 1; // 标记为已访问dfs(ps[i], step + 1, tmp, s + dis(ps[i], p));ps[i].visit = 0; // 回溯,恢复未访问状态}}
}int main()
{cin >> n; // 输入点的数量// 输入每个点的坐标并初始化for (int i = 0; i < n; i++){cin >> ps[i].x >> ps[i].y;ps[i].visit = 0;ps[i].num = i;}// 创建起点(原点),并标记为已访问point p = {0, 0, 1, 0};// 开始深度优先搜索dfs(p, 0, 0, 0);// 输出最短路径长度,保留两位小数printf("%.2f", ans);return 0;
}

【运行结果】

4
1 1
1 -1
-1 1
-1 -1
7.41
http://www.jsqmd.com/news/390110/

相关文章:

  • 2026年试验机实力厂家哪家值得选?热门排行公布,洛氏硬度计/电子万能材料测试机,试验机厂家推荐排行榜 - 品牌推荐师
  • 题解:洛谷 P1135 奇怪的电梯
  • 再论自然数全加和 - 角度和三角函数的本质
  • OpCore Simplify智能配置:黑苹果配置的自动化革命 - 指南
  • 2月17号
  • 题解:洛谷 P1219 [USACO1.5] 八皇后 Checker Challenge
  • 题解:洛谷 P1443 马的遍历
  • 【GitHub项目推荐--ORB-SLAM3:开源视觉、视觉惯性及多地图SLAM库】
  • 污水处理系统中组态王6.55与三菱PLC联机仿真OPC通讯优化之旅
  • Photoshop - Photoshop 工具栏(63)注释工具
  • 题解:洛谷 P3853 [TJOI2007] 路标设置
  • 静态无功补偿器(SVC)仿真模型 采用静态无功补偿器(SVC)对一个500kv, 3000mv...
  • 春晚机器人与中国未来100年发展
  • Photoshop - Photoshop 工具栏(64)计数工具
  • 题解:洛谷 P3743 小鸟的设备
  • 题解:洛谷 P2678 [NOIP 2015 提高组] 跳石头
  • 构建跨行业三维空间智能治理中枢——矩阵视频融合 × 三角测量 × 数字孪生驱动全域风险前置控制
  • 论文阅读:arxiv 2025 Jailbreaking Attacks vs. Content Safety Filters: How Far Are We in the LLM Safety Ar
  • 复杂场景三维空间主动风险防控与智能调度系统——基于矩阵视频融合的空间级安全感知底座技术白皮书
  • 题解:洛谷 P1163 银行贷款
  • 题解:洛谷 P1182 数列分段 Section II
  • 正规的美团礼品卡回收平台推荐 - 京顺回收
  • 题解:洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树
  • 题解:洛谷 P2440 木材加工
  • 【LeetCode 每日一题】3314. 构造最小位运算数组 I —— (解法二) - 详解
  • 题解:洛谷 P1102 A-B 数对
  • Smoke and Mirrors inspiration
  • 这个时间序列预测模型有点意思,直接上代码更直观。咱们先看看整个模型的架构长啥样
  • 题解:洛谷 P1678 烦恼的高考志愿
  • 行业内服务好的盒马鲜生礼品卡回收平台推荐 - 京顺回收