牛客网【每日一题】5月8日题目精讲 codeJan与旅行

比赛链接:

文章目录

    • 题目描述
    • 题解:

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

codeJan 非常喜欢旅行。现在有 n 个城市排在一条线上,并且 codeJan 的位置不和任何一个城市的位置重叠。 codeJan
想要游览 m
个城市,同时因为时间是不断变化的,游览一个城市多次也是允许的,但是不能永远待在一个城市,否则那样太无聊了。给出这些城市的位置,codeJan
想要知道游览 m 个城市至少需要走多少米? 输入描述: 第一行是一个T≤20代表测试组数。
每组第一行是三个正整数n,m,p,分别代表城市数量、codeJan想要浏览的城市数量和codeJan当前的位置(单位为米)。
第二行包含n个正整数pos[i]表示第i个城市的位置,单位为米。 输入保证pos[i]<posi+1,并且p ≠
posi。 输出描述: 对于每组输入数据输出一个正整数表示 codeJan 至少需要走的距离。

示例1
输入

3 
2 2 2 
1 3 
2 2 1 
2 3 
4 3 4 
1 3 5 6

输出

3
2
3

说明

对于第一个样例的坐标最优移动顺序可以是:2→3→1,移动距离一共是3。
对于第二个样例的坐标最优移动顺序可以是:1→2→3,移动距离一共是2。
对于第三个样例的坐标最优移动顺序可以是:4→5→6→5,移动距离一共是3。

备注:
2≤n≤105,1≤m≤105 ,1≤p,pos[i]≤109

题解:

因为一个城市可以走多次,但不允许停留,那么最佳方案就是从p到两个距离最小的城市,然后反复移动。
这样只用考虑在哪两个点之间徘徊,然后让p前往,答案取最小就好
abs(pos [ai-] - pos [ai]) * sum
sum=剩下的所需要的浏览的城市数量(因为从p到这两个城市的过程中也有经过其他城市)
但问题是我们保证率ai与ai-1这两个城市的距离最小,但是p和这两个城市以及其他城市的距离大小我们无法保证,如果p旁边就有个很近的城市,距离小于ai与ai-1之间的距离,那不浏览这个城市岂不血亏
就比如
数据:
1
3 10 5
4 13 17
按照我们的方法从p=5到13,然后13到17,然后循环,这两个城市距离是4,但从p到4再回来只需要2步,从p到13这段路是必须走的嘛,就先当于浏览相同的城市却少走了2步,所以你会发现最佳应该是先到4,再到13,然后徘徊。如果第一个城市不是4是而是2,从p到1再回来是6步,大于4步,那我们就不要管4,直接前往13,13到17徘徊就可以了。
那会不会从p到附近两个点或者多个,更会优化,这样是不会的,因为我们求出来ai与ai-1的距离是最小的,也就是除此之外的两个点一定比他俩距离大,那就不必要了,因为p的起始点不是城市,所以才会存在可能要从p先到附近更近的点。
总结下
我们先看看p附近有没有更近城市,然后再去城市ai与ai-1

我大致就是理解到这个程度
此处借用大佬的代码,我在里面写了详细的注释,结合代码看看分析
具体证明可以看这个题解大佬题解

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+1;
int pos[maxn];int n,m,p,x;
signed main(){int T;cin>>T;while(T--){x=0;cin>>n>>m>>p;for(int i=1;i<=n;++i){scanf("%lld",&pos[i]);if(p>pos[i]){x=i;//取p的左侧最近的城市 }}int ans=1e17;for(int i=1;i<n;++i){//i-i+1徘徊if(i<=x)//如果当前城市位于p的左侧 {if(x-i+1>m)//p与当前城市i之间的城市数量大于m {continue;//如果去城市i的话会造成浪费,所以筛掉 }int sy=m-(x-i+1);//因为从p到i会经过x-i+1个城市,还剩下m-(x-i+1)个城市 int dis=p-pos[i];//当前城市与p点的距离 ans=min(ans,dis+sy*(pos[i+1]-pos[i]));//从p直接前往城市i,并在i与i+1之间循环sy次,将剩下sy个城市浏览完 if(sy&&x+1<=n) {ans=min(ans,(pos[x+1]-p)*2+dis+(sy-1)*(pos[i+1]-pos[i]));//去p的右边看看,有没有符合条件的点,使得距离还能缩短 }}else//如果位于p的右侧 {//下面的操作和上面是一样的,正好反过来 if(i-x>m)continue;int sy=m-(i-x),dis=pos[i]-p;ans=min(ans,dis+sy*(pos[i+1]-pos[i]));if(sy&&x>=1){ans=min(ans,(p-pos[x])*2+dis+(sy-1)*(pos[i+1]-pos[i]));}}}printf("%lld\n",ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.netcore consul实现服务注册与发现-集群完整版

一、Consul的集群介绍Consul Agent有两种运行模式&#xff1a;Server和Client。这里的Server和Client只是Consul集群层面的区分&#xff0c;与搭建在Cluster之上的应用服务无关&#xff0c; 以Server模式运行的Consul Agent节点用于维护Consul集群的状态&#xff0c;官方建议每…

【矩阵乘法】【倍增】WYC(luogu 3597)

WYC 题目大意 给你一个有向图&#xff0c;让你求图中的kkk短路&#xff08;非简单路径&#xff09; 输入样例# 6 6 11 1 2 1 2 3 2 3 4 2 4 5 1 5 3 1 4 6 3输出样例#1 4数据范围 1⩽n⩽40&#xff0c;1⩽m⩽1000&#xff0c;1⩽k⩽10181\leqslant n\leqslant 40&#xff…

匹配(树形DP)

传送门 题目描述&#xff1a; 有一张无向联通图 G⟨V,E⟩ &#xff0c;其中顶点数 |V|n &#xff0c;边数 |E|n−1 。求有多少种方案使得删边后残余图中的最大匹配数恰好为 m 的倍数。 题解&#xff1a; 这道题看起来是求最大匹配&#xff0c;其实关系不大&#xff0c;正解…

博弈论讲解(一)

常见的博弈论有巴什博弈&#xff0c;威佐夫博弈&#xff0c;尼姆博弈&#xff0c;斐波那契博弈等等&#xff0c;今天暂时讲几个 文章目录一.巴什博弈证明&#xff1a;代码二.威佐夫博奕结论&#xff1a;代码&#xff1a;三.环形博弈结论证明代码&#xff1a;一.巴什博弈 巴什博…

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作&#xff0c;此版本通过nuget下载引擎组件&#xff0c;下载后&#xff0c;无需通过代码build集成&#xff0c;引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎&#xff0c;而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼&#xff09;&#xff0c;手残把&打成整除了&#xff08;大样例还对了gg&#xff09; T2乱推&#xff0c;然后打了个O(n)O(n)O(n)&#xff0c;却WA了15分&#xff1f; T3看了看&#xff0c;修改不会相互影响&#xff1f;那不…

51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1220 题目大意 给出nnn&#xff0c;求∑i1n∑j1nσ(i∗j)\sum_{i1}^n\sum_{j1}^n\sigma(i*j)i1∑n​j1∑n​σ(i∗j) 其中σ\sigmaσ表示约数和。 解题思路 首先有结论σ(i∗j)∑x∣i∑y∣j[gcd(x,y)1]…

CDQ分治与整体二分

首先说明&#xff0c;CDQ分治与整体二分都是离线算法 CDQ分治&#xff1a; 流程&#xff1a; 1.我们要解决一系列问题&#xff0c;这些问题一般包含修改和查询操作&#xff0c;可以把这些问题排成一个序列&#xff0c;用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题&#xff1a;结论证明&#xff1a;尼姆博奕(Nimm Game)问题&#xff1a;结论&#xff1a;证明&#xff1a;代码&#xff1a;公平组合博弈&#xff08;Impartial Combinatori Games&#xff09;理论知识&#xff08;1&#xff09;、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core&#xff08;开篇&#xff09;》简单的介绍了&#xff08;水了一篇&#xff09;.net core。这次针对短信服务的架构设计和技术栈的简析。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…

字符串hash(一)

很久没遇到过hash的题了&#xff0c;今天来重新温故一下 文章目录序言常用的几个字符串hash方法&#xff1a;hash公式&#xff08;自然溢出&#xff09;讲解模板单hash讲解模板双hash讲解代码总结序言 你有没有想过&#xff0c;字符串存储一大溜&#xff0c;比较时又麻烦又折腾…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试&#xff0c;CAP 2.3 版本终于发布了&#xff0c;这个版本最大的特性就是对于 MongoDB 的支持&#xff0c;感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR&#xff0c;相信随着博客园的使用&#xff0c;CAP 会越来越多的帮助到更多的人。CAP …

【矩阵乘法】递推(ssl 1532)

递推 ssl 1532 题目大意 给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​ fia0∗fi−na1∗fi−(n−1)...an−1∗fi−1anf_ia_0*f_{i-n}a_1*f_{i-(n-1)}...a_{n-1}*f_{i-1}a_nfi​a0​∗fi−n​a1​∗fi…

P3185-[HNOI2007]分裂游戏【SG函数】

正题 题目链接:https://www.luogu.com.cn/problem/P3185 题目大意 nnn个瓶子&#xff0c;开始第iii个里有pip_ipi​个糖果&#xff0c;操作的人可以找到一个三元组(i,j,k)i<j≤k(i,j,k)\ i<j\leq k(i,j,k) i<j≤k然后取出iii中的一个糖果&#xff0c;在j,kj,kj,k中各…

牛客网 【每日一题】5月9日 过河

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 在河上有一座独木桥&#xff0c;一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子&#xff0…

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的&#xff0c;其提供了操作系统级别的抽象&#xff0c;是一种容器管理技术&#xff0c;它隔离了应用程序对基础架构&#xff08;操作系统等&#xff09;的依赖。相较于虚拟机而言&#xff0c;Docker共享的是…

【矩阵乘法】幼儿园数学题I(ssl 2513)

幼儿园数学题I ssl 2513 题目大意 定义fn(512)n−1f_n\left ( \frac{\sqrt{5}1}{2}\right )^{n-1}fn​(25​1​)n−1&#xff0c;求前n项的和,&#xff08;对109710^971097取模&#xff09;&#xff08;题目貌似出了些问题&#xff0c;实际上fff等价于斐波那契数列&#xff…

P4492-[HAOI2018]苹果树【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4492 题目大意 开始有一个节点&#xff0c;第iii次在一个儿子不超过222的节点下面长出一个新儿子编号为iii。求所有方案下树的路径长度和。 解题思路 考虑计算每条边的贡献&#xff0c;设gig_igi​表示大小为iii的树的形态…