[笔试题记录]T01 最优高铁修建方案
T01 最优高铁修建方案
2022年8月3日记录,记录最近遇到的几道笔试题:
最优城市高铁修建方案
给定城市数量,可建设高铁的两个城市间的修建成本列表,以及结合城市商业价值会固定建设的两个城市间高铁。
请设计算法,达到修建城市高铁的最低成本,注意,需要满足城市圈内两两互联可达(通过其他城市中转也可以)
输入:
1.第一行,包含此城市圈中城市数量,可建设高铁的两城市间的修建成本列表数量,必建高铁的城市列表。三个数字用空格间隔
2.可建设高铁的两城市间的修建成本列表,为多行输入,格式为3个数字,用空格分割,长度不超过1000
3.固定要修建的高铁城市列表,是上面参数2的子集,可能为多行,每行输入为2个数字,以空格分割
城市id从1开始编号,建设成本的值为正整数,取值范围不会超过1000
输出:
修建城市圈高铁的最低成本,正整数。如果城市圈内存在两城市之间无法互联,返回-1.
样例1:
输入:
3 3 0
1 2 10
1 3 100
2 3 50
输出:60
样例2:
输入:
3 3 1
1 2 10
1 3 100
2 3 50
1 3
输出: 110
解题思路:
考虑这个问题,其实是求最小生成树的题目,不过就是增加了一些难度设置,就是可能会有必须要添加的边做初始集合,所以这里参考使用Kruskal算法
,基于并查集的实现,先把必须修建高铁的边添加进去,之后就取最小花费的边进行判断,如果没有构成圈,就添加边,直到边集合有n-1条边结束,或者没有办法联通就输出-1
import java.util.*;class edge{int from;int to;int cost;public edge(int from,int to,int cost){this.from = from;this.to = to;this.cost = cost;}}
class Uniform{int[] root;public Uniform(int n){root = new int[n];for(int i=0;i<n;i++) root[i] = i;}public int find(int x){if(root[x]==x) return root[x];return root[x] = find(root[x]);}public void union(int x,int y){int rx = find(x);int ry = find(y);if(rx!=ry){root[rx] = ry;}}public boolean check(int x,int y){return find(x)==find(y);}
}public class T {public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int k = sc.nextInt();edge[] edges = new edge[m];// int[][] graph = new int[1005][1005];HashMap<String,Integer> map = new HashMap<>();for(int i=0;i<m;i++){int from = sc.nextInt();int to = sc.nextInt();int cost = sc.nextInt();edges[i] = new edge(from,to,cost);StringBuilder key = new StringBuilder();key.append(edges[i].from);key.append(edges[i].to);map.put(key.toString(),i);key = new StringBuilder();key.append(edges[i].to);key.append(edges[i].from);map.put(key.toString(),i);}//然后是必须要选择的边int res = 0;Uniform uf = new Uniform(n+1);boolean[] vis = new boolean[n];int egs = 0;for(int j=0;j<k;j++){int from = sc.nextInt();int to = sc.nextInt();StringBuilder key = new StringBuilder();key.append(from);key.append(to);uf.union(from,to);int id = map.get(key.toString());res += edges[id].cost;vis[id] = true;egs++;}PriorityQueue<edge> Q = new PriorityQueue<>(new Comparator<edge>() {@Overridepublic int compare(edge o1, edge o2) {return o1.cost - o2.cost;}});for(int i=0;i<n;i++){if(!vis[i]) Q.offer(edges[i]);}while(!Q.isEmpty()){edge cur = Q.poll();if(uf.check(cur.from,cur.to)) continue;res += cur.cost;uf.union(cur.from, cur.to);egs++;}if(egs==n-1){System.out.println(res);}else System.out.println(-1);}
}
[笔试题记录]T01 最优高铁修建方案相关推荐
- 记录一次Java笔试题记录一次Java笔试题
记录一次Java笔试题 一.下列语句片段,运行结果是 二.这段代码运行结果是多少? 三.Object中有哪些公共方法? 四.java中基本数据类型有哪些? 五.循环中使用break.continue. ...
- 京东2018校招研发笔试题记录
背景 这几天正好是各大互联网公司校招笔试的时间,于是陪着同学一起做了一下京东的笔试题.其中单选和不定项选择题涵盖的范围还是比较广的,包括子网掩码的计算.linux相关知识点.C++知识点.设计模式等. ...
- Python笔试题记录——字符串类笔试题自记
目录 字符串距离 思路整理 完整代码 字符串提取 思路自记 计算重复字符串长度 思路自记 字符串连连看 思路自记 字符串匹配 思路自记 完整代码 字符串类笔试题总结 字符串距离 给出两个相同长度的由字 ...
- 2021届BiliBili校招 数据分析/后端开发 笔试题记录
文章目录 1. 背景 2. 题型 3. 选择题范围 3.1 数据结构 3.2 计算机网络 3.3 操作系统 3.4 计算机组成 3.5 其他 4. 算法题 4.1 第一题 4.2 第二题 4.3 第三 ...
- 数字IC笔面试(一)——联发科提前批笔试题记录
六月底参加了联发科提前批的数字IC笔试,自己能会一些的无非就是FPGA部分,还是凉凉了,不好好准备还是不行!!本文记录一下题目,毕竟复盘很重要啊,同时加入一些小的理解,若有错误,请指正,谢谢!! 对联 ...
- 网易2017年春招笔试题记录
1 双核CPU 题目:一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务.n个任务可以按照任意 ...
- 2023春实习笔试题记录
文章目录 美团 3.25 1 模拟栈 2 最大美味值 I 3 每个背包最多装巧克力个数 4 类 Redis 实现 5 最大美味值 II 美团 4.1 1 计算练习 18/100 2 最小差距和 100 ...
- 测试开发linux基础面试题,网易2018测试开发实习生笔试题记录
一.选择题 1.关于随机测试,以下哪一项说明是正确的? 随机测试是根据测试的经验在无测试用例的情况下进行的测试. 随机测试也是需要写一定的测试用例,但可以用例中没有的测试点. 随机测试不会产生测试冗余 ...
- Go_笔试题记录-不熟悉的
1.golang中没有隐藏的this指针,这句话的含义是() A. 方法施加的对象显式传递,没有被隐藏起来 B. golang沿袭了传统面向对象编程中的诸多概念,比如继承.虚函数和构造函数 C. go ...
最新文章
- poj 3984
- ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- C#中GDI绘制高质量平滑图形实例
- socket websocket
- Python的基础--对象 转
- easyPR源码解析之plate_locate.h
- 【.net 深呼吸】项目中是否有必要删去多余的引用
- mysql列的数值型,字符型,日期型
- ubuntu下设置Android手机驱动
- 椭圆形建筑——逸夫演艺中心
- 祈澈姑娘:为自己代盐
- easyphp mysql_用EasyPHP本地搭建PHP环境 | Wopus
- 牛客练习赛85-哲学家的沉思-(上升子序列变形+树状数组+线段树+离散化+set)
- 解决方法数超65536(java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536)
- maven deploy
- 声音发生器、pwm、占空比
- 犀牛建立html格式,初学犀牛建模思路养成
- 有备无患!应届生CV算法岗面试指南
- Computer Vision
- SparseLab工具包安装尝试
热门文章
- 惠普win10一键还原_执行 HP 系统恢复 (Windows 10)
- TPAMI 2022|金字塔池化的骨干网络!南开达摩院联合推出P2T
- 智能卡应用的开发流程
- 甲骨文和IBM的IaaS云战略:畅所欲言,少投资
- 一分钟理解 HTTPS 到底解决了什么问题
- Silverlight是什么
- 电子邮件内容安全刻不容缓
- 计算机连接苹果手机不能找到照片目录,iPhone与电脑连接后找不到照片怎么办?掌握这三个技巧,烦恼问题轻松解决!...
- BZOJ1179【APOI2009】ATM Tarjan
- DHU OJ | 索引