Skip to content

泉州一中信息学Blog

信息学奥赛技术分享博客

  • 登录
  • 小学oj
  • 中学oj
  • 测试页面1
  • Toggle search form

21 Days Training // Day 19

Posted on 2025年8月13日 By c2022zyh 21 Days Training // Day 19无评论

T0. path

My idea : enum.

Search all possiblities, check if it is valid, find the mininum distance.

Constraints :

Expected : 20/20

Solution : The bitonic tour, DP.

Notice that walking from A to B and then walking from B to A is equal to walking from A to B 2 times in paths with no intersections.

So we use dp[i][j] to record the mininum distance when the 1st path walks to i and the 2nd path walks to j.

The solution above is the standard solution to solve the bitonic tour with the mininum distance.

For the special points given in the problem, add some extra conditions.

Code :

/*
!!! Copy from blog.csdn.net !!!
*/

#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("path.in", "r", stdin);
    freopen("path.out", "w", stdout);
    int N, u, v;cin >> N >> u >> v;
    pair<int, int> P[N];
    for (int i=0;i<N;i++) {
        int x, y;cin >> x >> y;
        P[i] = make_pair(x, y);
    }
    double dp[N][N];

    for (int i=0;i<N;i++) {
        for (int j=0;j<N;j++) {
            dp[i][j]=1.797e308;
        }
    }
    dp[0][0] = 0;
    for (int i=0;i<N;i++) {
        for (int j=0;j<N;j++) {
            if (i==j&&(i)) continue;
            int k=max(i, j)+1;
            if (k==N) {
                if (i<N-1) {
                    dp[N-1][N-1] = min(dp[N-1][N-1], dp[i][j]+sqrt((P[i].first-P[N-1].first)*(P[i].first-P[N-1].first)+(P[i].second-P[N-1].second)*(P[i].second-P[N-1].second)));
                }
                if (j<N-1) {
                    dp[N-1][N-1] = min(dp[N-1][N-1], dp[i][j]+sqrt((P[j].first-P[N-1].first)*(P[j].first-P[N-1].first)+(P[j].second-P[N-1].second)*(P[j].second-P[N-1].second)));
                }
            }
            else {
                if (k!=u) dp[k][j] = min(dp[k][j], dp[i][j]+sqrt((P[k].first-P[i].first)*(P[k].first-P[i].first)+(P[k].second-P[i].second)*(P[k].second-P[i].second)));
                if (k!=v) dp[i][k] = min(dp[i][k], dp[i][j]+sqrt((P[k].first-P[j].first)*(P[k].first-P[j].first)+(P[k].second-P[j].second)*(P[k].second-P[j].second)));
            }
        }
    }
    printf("%.2lf", dp[N-1][N-1]);
    return 0;
}

Pages: 1 2 3 4 5 6 7
训练日志

文章导航

Previous Post: GDNOJ – DAY 17 – 1
Next Post: 中山集训8.13

发表回复 取消回复

要发表评论,您必须先登录。

2025年 12月
一 二 三 四 五 六 日
1234567
891011121314
15161718192021
22232425262728
293031  
« 8月    

2024常州 Class Classic OI Problems Contest cqr的长乐集训2023 CZYZ LOC New Game NOI NOIP Password Protected PM_PK Preview Problems Retrospect Selfmade Qusetion STL The end Training Uneasy Problem 蒟蒻 通报

  • 训练日志
  • 链表
  • 入门
  • 模拟
  • dfs序
  • 并查集
  • spfa
  • 最小割
  • 矩阵树定理
  • 仙人掌
  • BSGS
  • 凸包
  • 回文自动机
  • 递推与动归
  • 堆
  • 莫队算法
  • ST表
  • Treap
  • 树套树
  • 可持久化线段树
  • 初赛
  • 搜索
  • 贪心
  • 深度优先搜索
  • 欧拉图
  • dijkstra
  • 费用流
  • 哈夫曼树
  • kruskual
  • 置换
  • 旋转卡壳
  • KMP
  • 区间动归
  • STL
  • 链表
  • 可并堆
  • sply
  • 主席树
  • 可持久化字典树
  • 算法
  • 动态规划
  • 构造
  • 广度优先搜索
  • 最短路
  • floyd
  • 最大流
  • 虚树
  • prim
  • 筛法
  • 半平面交
  • 字典树
  • 背包动归
  • 基础数据结构
  • 分块
  • 线段树
  • 替罪羊树
  • K-DTree
  • 图论
  • 二分法
  • 迭代搜索
  • 拓扑排序
  • 有上下界网络流
  • 生成树
  • 快速幂
  • 后缀数组
  • 树形动归
  • 哈希表
  • 中级数据结构
  • 平衡树
  • 可持久化数据结构
  • 数据结构
  • 三分法
  • 启发式搜索
  • 图的连通
  • 点分治
  • 博弈论
  • AC自动机
  • 状压动归
  • 单调栈
  • 树状数组
  • 高级数据结构
  • OI资料
  • 数学
  • 高精度
  • 差分约束
  • 树上倍增
  • 素数测试
  • 后缀自动机
  • 数位动归
  • 单调队列
  • 新闻
  • 几何
  • 随机化
  • 二分图染色
  • 树链剖分
  • 欧拉函数
  • manacher
  • 斜率优化
  • 离线处理
  • 信息学奥赛学长风采
  • 字符串
  • 二分图匹配
  • prufer编码
  • 卡特兰数
  • 密码学
  • 决策单调
  • 赛后总结
  • 其他
  • 2-SAT
  • 最近公共祖先
  • 矩阵乘法
  • 记忆化搜索
  • 网络流
  • Link cut tree
  • 排列组合
  • 树
  • 高斯消元
  • 乘法逆元
  • 容斥原理
  • 调和级数
  • 概率与期望
  • 模线性方程组
  • 莫比乌斯反演
  • 快速傅里叶变换
  • 扩展欧几里德
  • 最大公约数与最小公倍数

近期文章

  • 中山纪念中学 Day21
  • 中山集训8.15 LAST DAY+集训小结
  • GDNOJ – DAY 18
  • 中山8.14
  • 2025暑假中山集训Day20——8.14

近期评论

归档

  • 2025年8月
  • 2025年7月
  • 2025年2月
  • 2025年1月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月

Copyright © 2025 泉州一中信息学Blog.

Powered by PressBook WordPress theme