团购机票网站建设免费的网页制作软件

bicheng/2026/1/22 19:07:34/文章来源:
团购机票网站建设,免费的网页制作软件,制作网站教学,写作网站六大神书有一个环形的公路#xff0c;上面共有n站#xff0c;现在给定了顺时针第i站到第i1站之间的距离#xff08;特殊的#xff0c;也给出了第n站到第1站的距离#xff09;#xff0c;小*想着沿着公路第x站走到第y站#xff0c;她想知道最短的距离是多少#xff1f; 输入描述…        有一个环形的公路上面共有n站现在给定了顺时针第i站到第i1站之间的距离特殊的也给出了第n站到第1站的距离小*想着沿着公路第x站走到第y站她想知道最短的距离是多少 输入描述 第一行输入一个正整数n代表站的数量。第二行输入n个正整数ai前 n-1个数代表顺时针沿看公路走i站到第i1站之间的距离:最后一个正整数代表顺时针沿着公路走第n站到第1 站的距离 第三行输入两个正整数x和y代表小美的出发地和目的地。                        1 n 10^5                         1ai 10^9                        1x,yn 输入                    3                    1 2 2                    2 3 输出                     2 大厂的笔试永远这么晦涩难懂刚看到题的时候只能知道它是一道图论问题题目描述的确实有一点绕现在让我们来分析一波题的含义 假如你现在在车站1假如你的目的地是车站3你选择哪条路路径最短毫无疑问肯定是由车站1直接到车站3路径是最短的我们可以用眼睛直接观察出来可是计算机可不能直接得出正确答案如果你做图论的相关题较多的话其实你刚看到这道题心里便会想到这道题和这题类似的leetcode原题K 站中转内最便宜的航班我们今天以讲解leetcode为例这道题知识稍微在那道题中做了变形就出来了 有 n 个城市通过一些航班连接。给你一个数组 flights 其中 flights[i] [fromi, toi, pricei] 表示该航班都从城市 fromi 开始以价格 pricei 抵达 toi。 现在给定所有的城市和航班以及出发城市 src 和目的地 dst你的任务是找到出一条最多经过 k 站中转的路线使得从 src 到 dst 的 价格最便宜 并返回该价格。 如果不存在这样的路线则输出 -1。 n 3, edges [[0,1,100],[1,2,100],[0,2,500]] src 0, dst 2, k 1 输出: 200 解释: 城市航班图如下其实K站中转内最便宜的航班其实约束条件更多一点其要找到一条最多经过k站中转的路线 我们这次使用递归来解决这个问题 由于题目中给出我们这些信息所以我们就可以根据这些信息去构建邻接表 因为我们函数在递归的时候函数中的参数是我们的起点位置所以我们因为构造一个to-[from,price]的邻接矩阵 //邻接表的数据结构 MapInteger,ListInteger[] mapnew HashMap();//遍历每一个数组取出对应的元素for(int[] f:flights){//起点int fromf[0];//终点int tof[1];//两点之间的距离int pricef[2];//如果不包含if(!map.containsKey(to)){map.put(to,new LinkedList());}//构建邻接表map.get(to).add(new Integer[]{from,price});} 接下来就是我们寻找起点和终点的最短路径的最短距离 函数标签 //dst指的是当前点 k指的是剩下可以步数 private int dfs(int dst, int k) {} 如果我们的起点正好等于我们的终点直接返回0说明已经找到了一条可以到达目的地的路线 if(dstsrc){return 0;} 如果k0说明当前已经不满足题目的要求没到终点且步数为0直接返回-1 if(k0){return -1;} 如果当前节点合法那么就遍历与它直接相邻的节点 if(map.containsKey(dst)){//遍历邻接表for(Integer[] v:map.get(dst)){//起点int fromv[0];//所需要的花费int pricev[1];//递归下一个节点int subdfs(from,k-1);//如果sub不是-1就说明该路线是合法的if(sub!-1){//当前节点距离终点的路径下一个节点距离终点的路径当前节点距离下一个节点的距离resMath.min(res,subprice);}}return res;} 这种递归的方法肯定是超时所以我们使用记忆化搜索的方式去进行优化 int[][]memo;memonew int[n][k1]; //如果曾经已经计算过直接返回答案 if(memo[dst][k]!-88)return memo[dst][k]; res resInteger.MAX_VALUE?-1:res;memo[dst][k]res; 动态规划方式就先不做介绍了大家下去可以自行试一试 源码如下 MapInteger,ListInteger[] mapnew HashMap();//记忆化数组int[][]memo;//起点int src;//终点int dst;public int findCheapestPrice(int n, int[][] flights, int src, int dst, int k) {this.dstdst;this.srcsrc;//k表示的节点我们将结点转换成步数更利于计算k;memonew int[n][k1];//对记忆化数组进行初始化for(int[] row:memo){Arrays.fill(row,-88);}//构造邻接表for(int[] f:flights){int fromf[0];int tof[1];int pricef[2];if(!map.containsKey(to)){map.put(to,new LinkedList());}map.get(to).add(new Integer[]{from,price});}return dfs(dst,k);}//表示从dst的走k步的最小价格private int dfs(int dst, int k) {if(dstsrc){return 0;}if(k0){return -1;}if(memo[dst][k]!-88)return memo[dst][k];int resInteger.MAX_VALUE;if(map.containsKey(dst)){for(Integer[] v:map.get(dst)){int fromv[0];int pricev[1];int subdfs(from,k-1);if(sub!-1){resMath.min(res,subprice);}}}res resInteger.MAX_VALUE?-1:res;memo[dst][k]res;return memo[dst][k];} 我们再来看这道所谓大厂的笔试题这道题过程跟这个题一模一样我们只需要将上面这个题中的k这个约束给省略掉这道题也就出来了 代码如下 MapInteger,ListInteger[] mapnew HashMap();int[]memo;int src;int dst;public int findCheapestPrice(int n, int[][] flights, int src, int dst) {this.dstdst;this.srcsrc;memonew int[n];Arrays.fill(memo,-88);for(int[] f:flights){int fromf[0];int tof[1];int pricef[2];if(!map.containsKey(to)){map.put(to,new LinkedList());}map.get(to).add(new Integer[]{from,price});}return dfs(dst);}private int dfs(int dst) {if(dstsrc){return 0;}if(memo[dst]!-88)return memo[dst];int resInteger.MAX_VALUE;if(map.containsKey(dst)){for(Integer[] v:map.get(dst)){int fromv[0];int pricev[1];int subdfs(from);if(sub!-1){resMath.min(res,subprice);}}}res resInteger.MAX_VALUE?-1:res;memo[dst]res;return memo[dst];}知识ACM模式下我们的所有参数都需要我们手动的去输入这点也是比较关键点的因素 起先我是这样写的 Scanner scannernew Scanner(System.in);int nscanner.nextInt();int[][] numsnew int[n][3];int index0;//遍历每个数组for(int[] num:nums){while(scanner.hasNextInt()){//给每个数组进行赋值for(int i0;inum.length;i) {if(in-1){num[0]i;num[1]0;num[2]scanner.nextInt();}else{num[0]i;num[1]i1;num[2]scanner.nextInt();}}break;}}int startscanner.nextInt();int endscanner.nextInt(); 最后半天一直在死循环后来发现每个数组就3个元素我这个for循环加的位置明显就有问题所以一直在死循环所以果断换了一种方式及时止损 Scanner scanner new Scanner(System.in);System.out.print(输入行数:);int n scanner.nextInt();int m 3;int[][] nums new int[n][m];System.out.println(输入二维数组中的值:);//利用双层for循环进行定点输入for (int i 0; i n; i) {for (int j 0; j m; j) {nums[i][j] scanner.nextInt();}}System.out.println(输入的二维数组为:);for (int i 0; i n; i) {for (int j 0; j m; j) {System.out.print(nums[i][j] );}System.out.println();}int start scanner.nextInt();int end scanner.nextInt(); 我们将测试案例试一试 这样很明显示我们手动的输入了数组中的元素这样很显然是不符合题意的那么我们这么样输入[1 2 2] 会自动生成[[0,1,1],[1,2,2],[2,0,3]]这个数组呢我们先来说明它这个数组是是怎么生成的 因为我们的数组是从0开始计数的所以我们应该写成这样 我们开始ACM输入 System.out.println(输入二维数组中的值:);//输入一行时ACM输入while(scanner.hasNextInt()){for(int i0;in;i){int distscanner.nextInt();//如果是最后一个直接指向第一个节点if(in-1){int[] numnums[i];num[0]i;num[1]0;num[2]dist;//不是第一个直接指向后一个节点}else{int[] numnums[i];num[0]i;num[1]i1;num[2]dist;}}//这个break记得加要不就会死循环break;}System.out.println(输入的二维数组为:);for (int i 0; i n; i) {for (int j 0; j m; j) {System.out.print(nums[i][j] );}System.out.println();} 最后我们这道题也就讲解完了ACM输入的时候对于很多笔试经验少的同学确实是一个挑战希望大家刷题的过程中多使用ACM刷题leetcode的话尽量脱离有提示的工具最好在网页上进行写 ACM源代码输入 Scanner scanner new Scanner(System.in);System.out.print(输入行数:);int n scanner.nextInt();int m 3;int[][] nums new int[n][m];System.out.println(输入二维数组中的值:);while(scanner.hasNextInt()){for(int i0;in;i){int distscanner.nextInt();if(in-1){int[] numnums[i];num[0]i;num[1]0;num[2]dist;}else{int[] numnums[i];num[0]i;num[1]i1;num[2]dist;}}break;}System.out.println(输入的二维数组为:);for (int i 0; i n; i) {for (int j 0; j m; j) {System.out.print(nums[i][j] );}System.out.println();}int start scanner.nextInt();//输入的是起点为1数组的起点为0所以需要减1startstart-1;int end scanner.nextInt();endend-1; 如果有更高的ACM输入的方式或者是解题更妙的技巧欢迎大家来评论区进行评论

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

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

相关文章

wordpress数据库和网站文件下载wordpress后台开发

一、emptyDir存储卷 当Pod被分配给节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每…

怎么建设宣传网站黄冈论坛遗爱湖

一、安装目录介绍 其中:bin 目录下: 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性,就是你删除掉整个目录之后,重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置,所以很多…

深圳市城乡住房和建设局网站wordpress加载速度

连更!! 0 Abstract 先前的姿势引导图像合成方法简单的将人的外观与目标姿势进行对齐,这容易导致过拟合,因为缺乏对source person image的high-level semantic understanding;文章开发了一种新的训练范式:…

国内移动端网站做的最好的福田网站设计

您现在可以使用 MinIO 批处理框架执行 S3 删除操作,以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架,可以快速轻松地在 MinIO 部署中执行重复或批量操作,例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作,…

石家庄站列车时刻表wordpress数据库注入

RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题 学习解耦表示可逆列网络(RevCol)子特征1:多级可逆单元子特征2:可逆列架构…

400网站建设推广如何开一个微信公众号

本实验讲述ArcGIS Pro中人工智能深度学习应用之–汽车检测。 文章目录 一、学习效果二、工具介绍三、案例实现四、注意事项一、学习效果 采用深度学习工具,可以很快速精准的识别汽车。 案例一: 案例二: 下面讲解GIS软件实现流程。 二、工具介绍 该案例演示的是ArcGIS Pro中…

sae做的网站备份别人做的网站自己想更新

文章目录 概要背景解决方法技术细节小结 概要 关于kafka重平衡问题在实践工作的应用 背景 重平衡包括以下几种场景: 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的,就是某个消费者崩溃退出了主题的分…

自己网站如何做关键词东莞免费网站制作

文章目录 引言依赖注入基础依赖注入的基本概念依赖注入的原理 依赖注入实践依赖注入注意事项 引言 Angular作为一款流行的前端框架,提供了许多优秀的功能和特性,其中之一就是依赖注入(Dependency Injection)。依赖注入是一种设计…

全栈工程师是做网站吗html网站的直播怎么做

索引类型 索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下: 从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引 从应用层次划分:普通索引、唯一索引、主键索引、复…

做网站建设的价格建立网站赚钱 优帮云

Title: [科普] 无刷直流电机驱动控制原理图解 文章目录 I. 引言II. 直流电机的原理1. 有刷直流电机和无刷直流电机的区别2. 有刷直流电机的运行原理3. 既是电动机又是发电机 III. 无刷直流电机的原理1. 无刷直流电机与永磁同步电机的区别2. 无刷直流电机的换向控制原理3. 无刷直…

网站制作公司北京网站建设公司哪家好拼车网站的建设雨实现

CrossOver Mac 使用特点 • 免费试用 14 天,可使用 CrossOver Mac 全部功能,• 试用过期会保留之前安装的 Windows 软件• 使 Mac 运行 Windows 程序 使用CrossOver在Mac上运行Windows软件是一个方便且无需安装完整Windows操作系统的解决方案。CrossOve…

雄县做网站的网站开发模板教务管理

ElasticSearch是广受欢迎的NoSQL数据库,其分布式架构提供了极佳的数据空间的水平扩展能力,同时保障了数据的可靠性;反向索引技术使得数据检索和查询速度非常快。更多功能参见官网介绍 https://www.elastic.co/cn/elasticsearch/ 下面简单罗列…

做外贸网站的价格高清不卡二卡三卡四卡免费下载

Chat2DB:开源多数据库客户端的AI革新 Chat2DB使用教程:Chat2DB使用教程_哔哩哔哩_bilibili 引言: 随着企业数据的快速膨胀,数据库管理的复杂性也在增加。此时,一个能够跨越数据库边界、并且集成先进的AI功能的工具,不…

查询自己网站外链网站制作整个的流程是什么

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Django实现信号与消息通知系统 在Web应用程序中,实现消息通知系统是至关重…

建设银行网站信息补充做网站v赚钱

文章目录 第一种:直接与1判断第二种:与EOF判断第三种:巧用按位取反符号“~”写在最后 在代码的实际运用中,我们经常会遇到需要多组输入的情况,那么今天博主就带大家一起盘点三种常见的多组输入的写法 第一种&#xff1…

网页设计与网站建设全攻略华为十大外包公司排名

Spring Data JPA 的最大特色是利用方法名定义查询方法(Defining Query Methods)来做 CRUD 操作,这一课时我将围绕这个内容来详细讲解。 在工作中,你是否经常为方法名的语义、命名规范而发愁?是否要为不同的查询条件写…

网站建设加关键词是什么意思网站大全下载软件安装

避开-转义字符 python文件路径导致的错误常常与“\”有关,因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中,\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种: #1 前面加r表示不转义 pathr&quo…

长泰网站建设深圳营销网站建设模板

到了年底,今年不管经济如何,形势多么不好,这个月也要结束2023年了,在这个阶段最关键的是做好今年的总结以及明年的计划。 总结是为了更好地做明年的计划和形势的预判。 借用数据表作为工具,科学理性地对自身公司的经…

河南网站建设培训建一个网络商城的网站素材搜集预算是什么

C++ 标准库里的容器是线程不安全的,在多线程下使用容器时,需要实现线程安全的容器。本篇博客介绍C++实现线程安全的map。 在C++中实现一个线程安全的map通常涉及到使用互斥锁(例如std::mutex)来确保在多线程环境中对map的访问是串行化的,从而避免竞态条件和数据损坏。以下…

用wordpress搭建知名网站做网站必须要dreamever

学生霸凌不仅直接伤害到被霸凌者的身心健康,也对整个校园的和谐氛围构成了威胁。为了应对这一问题,校园防欺凌系统应运而生,成为维护校园安全、保护学生权益的重要工具。那么当校园防欺凌系统面对学生霸凌时,该如何有效应对呢&…