首页 > 其他分享 >2289 马拉松 暴力枚举 曼哈顿距离

2289 马拉松 暴力枚举 曼哈顿距离

时间:2024-09-30 16:47:47浏览次数:5  
标签:2289 int ll 距离 枚举 检查点 马拉松 跳过 行进

解决思路

 
  • 计算总距离:首先计算贝茜不跳过任何检查点的总行进距离。
 
  • 尝试跳过每个检查点:对于每个可以跳过的检查点,计算跳过该检查点后的行进距离,并记录最小的行进距离。
 
  • 输出结果:输出最小的行进距离。
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 1e5 + 10, inf = 0x3f3f3f3f;
    int x[N], y[N];
    int n;
    
    int main() {
        // 读取检查点的数量
        cin >> n;
        ll sum = 0;
        
        // 读取每个检查点的坐标
        for (int i = 1; i <= n; i++) {
            cin >> x[i] >> y[i];
            // 计算总行进距离
            if (i >= 2)
                sum += abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]);
        }
        
        ll ans = inf;
        
        // 尝试跳过每个可以跳过的检查点
        for (int i = 2; i <= n - 1; i++) {
            // 计算跳过第 i 个检查点后的行进距离
            ll d1 = abs(x[i] - x[i - 1]) + abs(y[i] - y[i - 1]);
            ll d2 = abs(x[i + 1] - x[i]) + abs(y[i + 1] - y[i]);
            ll nd = abs(x[i + 1] - x[i - 1]) + abs(y[i + 1] - y[i - 1]);
            ans = min(ans, sum - d1 - d2 + nd);
        }
        
        // 输出最短行进距离
        cout << ans;
        return 0;
    }

     

标签:2289,int,ll,距离,枚举,检查点,马拉松,跳过,行进
From: https://www.cnblogs.com/jyssh/p/18442119

相关文章

  • 11752 糖葫芦 模拟 排序 枚举
    解决思路 读取输入:读取糖果的数量 n 和每个糖果距左边第一颗糖果的距离。 排序:对糖果的距离进行排序。 枚举分割点:枚举两个分割点,将糖果分成三段,计算每段的长度,并求出总长度的最小值。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;cons......
  • 10789 神秘指数 数组 枚举 check
    解决思路 计算总和:首先计算所有神秘物品的神秘指数和 sum。 枚举分组数:从 n 开始枚举分组数 i,尝试将神秘物品分成 i 组。 检查分组可行性:对于每个分组数 i,检查是否可以将神秘物品分成 i 组且每组的神秘指数和相同。 输出结果:找到最小的可行分组数 i,......
  • c# 排序、强转枚举
    List<Tuple<double,int>>mm中doble从小到大排序mm本身排序在C#中,如果你有一个List<Tuple<double,int>>类型的集合mm,并且你想要根据Tuple中的double值(即第一个元素)从小到大进行排序,同时希望这个排序能够反映到mm本身(即原地排序),你可以使用List的Sort方法,并传入一个自定义的比较......
  • 【题解】【子集枚举】—— PERKET
    【题解】【子集枚举】——PERKET[COCI2008-2009#2]PERKET题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#2输入#3输出#3提示数据规模与约定说明1.思路解析2.AC代码[COCI2008-2009#2]PERKET通往洛谷的传送门题目描述Perket是一种流行......
  • Java的枚举类型使用指南
    测试代码:publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;//s和t引用同一个对象?System.out.println(s==t);////是原始数据类型吗?System.out.println(s.getClass().isPrimitive());......
  • disp_buffer_flags 枚举定义了一系列用于描述 framebuffer(帧缓冲区)特性的标志位
    disp_buffer_flags 枚举定义了一系列用于描述framebuffer(帧缓冲区)特性的标志位。这些标志位主要用于指示framebuffer的内容是如何组织的,特别是当涉及到立体视觉(3D显示)时。这些标志允许系统或应用程序知道如何正确地处理和显示framebuffer中的数据。下面是对每个标志位的具......
  • 枚举,精度,四则运算,加合集
    一.枚举类型仔细阅读示例:EnumTest.java,运行它,分析运行结果?代码如下:`publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.pri......
  • 利用反射扫描枚举生成数据字典数据
    在开发过程中经常遇到既需要维护枚举来完成各种条件判断,又需要维护数据字典供前端使用,维护数据字典的另一个用处是可以修改数据字典的label而无需调整代码,但是这种两边维护的方式非常浪费人力资源,甚至有时部署程序忘了维护数据字典导致线上环境出现无法正常显示等问题。为解......
  • 枚举类型的基本用法(动手动脑)
    仔细阅读示例:EnumTest.java,运行它,分析运行结果?代码如下:`publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getCl......
  • JsonGenerator.Feature各枚举项的作用
    枚举项作用AUTO_CLOSE_JSON_CONTENT确定在生成器关闭时,是否自动关闭未匹配的JSON数组或对象。AUTO_CLOSE_TARGET确定生成器是否会自动关闭底层的输出目标。ESCAPE_NON_ASCII指定是否需要对超出7位ASCII范围的所有字符进行转义。FLUSH_PASSED_TO_STREAM指定调用fl......