POJ 2075 Tangled in Cables (c++/java)

http://poj.org/problem?id=2075

题目大意:

给你一些人名,然后给你n条连接这些人名所拥有的房子的路,求用最小的代价求连接这些房子的花费是否满足要求。


思路:

昨天20分钟的题,输入不小心写错了- -|||||看世界杯半场休息随便看了下发现了。。。。T T

用map进行下标的映射,然后求MST即可。

c++

#include<cstdio>
#include<string>
#include<map>
#include<algorithm>
#include<iostream>
using namespace std;
const int MAXN = 500;
int fa[MAXN];
struct edge
{int from, to;double val;bool operator < (const edge& x)const{return val < x.val;}
}e[MAXN*MAXN];
map<string, int> m;int find(int cur)
{return cur == fa[cur] ? cur : fa[cur] = find(fa[cur]);
}int main()
{int len = 0, n;double a;cin >> a >> n;while (n--){string temp;cin >> temp;m[temp] = len++;}cin >> n;for (len = 0; len<n; len++){string from, to;double value;cin >> from >> to >> value;e[len].from = m[from];e[len].to = m[to];e[len].val = value;}for (int i = 0; i<len; i++)fa[i] = i;sort(e, e + len);double ans = 0;for (int i = 0; i<len; i++){int from = e[i].from;int to = e[i].to;int root_x = find(from);int root_y = find(to);if (root_x == root_y) continue;fa[root_x] = root_y;ans += e[i].val;}if (ans >  a)printf("Not enough cable\n");elseprintf("Need %.1lf miles of cable\n", ans);return 0;
}



JAVA:

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeMap;public class Main {//final 相当于constpublic static final int MAXN=500;//写起来好不习惯public static int[] fa=new int[MAXN];public static TreeMap<String, Integer> m=new TreeMap<String, Integer>();public static edge[] e=new edge[MAXN*MAXN];public static int find(int cur){//不能这么写?//return cur == fa[cur] ? cur : fa[cur] = find(fa[cur]);  if(cur==fa[cur])return cur;elsereturn fa[cur] = find(fa[cur]);	}  public static void main(String[] args) {int len = 0, n;  double a;  Scanner in=new Scanner(System.in);a=in.nextDouble();n=in.nextInt();while((n--)!=0){String temp=in.next();m.put(temp, new Integer(len++));		 }n=in.nextInt();double value;  for (len = 0; len<n; len++)  {  String from=in.next();String to=in.next();value=in.nextDouble();e[len]=new edge();e[len].from = m.get(from);  e[len].to = m.get(to);  e[len].val = value;  }  for (int i = 0; i<len; i++)  fa[i] = i;  //sortArrays.sort(e,0,len);   double ans=0;for(int i=0;i<len;i++){int from = e[i].from;  int to = e[i].to;  int root_x = find(from);  int root_y = find(to);  if (root_x == root_y) continue;fa[root_x] = root_y;  ans += e[i].val;  }if (ans >  a)  System.out.print("Not enough cable\n"); else   System.out.printf("Need %.1f miles of cable\n", ans);	//java 是.1f}}class edge implements  Comparable<edge>  
{int from,to;double val;public int compareTo(edge x)  {          //double比较错了一次)BigDecimal data1 = new BigDecimal(this.val); BigDecimal data2 = new BigDecimal(x.val); return data1.compareTo(data2) ;      }  
}



转载于:https://www.cnblogs.com/murmured/p/5004026.html

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

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

相关文章

利用nginx建立windows软连,实现IP访问文件

一、运行nginx 1、首先下载nginx&#xff0c;下载地址&#xff1a;https://www.lanzous.com/ianm7tg 2、解压文件如图&#xff1a; 3、运行nginx.exe&#xff0c;浏览器运行电脑ip地址&#xff0c;如图&#xff1a; 二、cmd管理员权限 运行中输入“cmd”&#xff0c;按住shi…

LeetCode 1263. 推箱子(BFS+DFS / 自定义哈希set)

文章目录1. 题目2. 解题2.1 超时解2.2 BFS DFS1. 题目 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 n * m 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或者是箱子。 现在你将作为玩家参与游戏&a…

深入浅出Java回调机制

前几天看了一下Spring的部分源码&#xff0c;发现回调机制被大量使用&#xff0c;觉得有必要把Java回调机制的理解归纳总结一下&#xff0c;以方便在研究类似于Spring源码这样的代码时能更加得心应手。 注&#xff1a;本文不想扯很多拗口的话来充场面&#xff0c;我的目的是希望…

前端:实现div等块元素添加X轴滚动显示(Y轴不滚动)

一、建立外盒子与内盒子 原生态代码&#xff1a; <div class"tol_dev"><div class"dev_li"></div><div class"dev_li"></div><div class"dev_li"></div><div class"dev_li"…

2020年学习总结

文章目录1. CSDN 博客数据2. 基础算法练习3. 机器学习4. 深度学习5. MySQL6. 总结和展望时间过得很快&#xff0c;2020结束了&#xff01; 写个流水账&#xff0c;记录一下。 1. CSDN 博客数据 截个图对比下&#xff1a; 2019年终2020年终 2. 基础算法练习 LeetCode 刷题 …

npm全局环境变量配置及解决VsCode使用时遇到的问题

一、npm全局环境变量配置 1、我们要先配置npm的全局模块的存放路径以及cache的路径 例如我希望将以上两个文件夹放在NodeJS的主目录下&#xff0c;便在NodeJs下建立”node_global”及”node_cache”两个文件夹。如下图 2、cmd 中输入如下命令 npm config set prefix “d:\no…

Android菜鸟如何学习Android系统开发?

如何做好Android学习前的准备? 如果你已经确定了学习Android的目标&#xff0c;那么&#xff0c;应该提前做好哪些工作、先打下哪些基础呢? 首先&#xff0c;你最好先熟悉一门编程语言&#xff0c;现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程&#x…

关于Django中JsonResponse返回中文字典编码错误的解决方案

遇到这样一个问题&#xff0c;返回的json不是中文 def get_json(request):return JsonResponse({"res": "成功"}) 结果&#xff1a; {"res": "\u6210\u529f"} 解决方案&#xff1a;JsonResponse(data, json_dumps_params{ensure_a…

LeetCode 668. 乘法表中第k小的数(二分查找)

文章目录1. 题目2. 解题1. 题目 几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第k小的数字吗&#xff1f; 给定高度m 、宽度n 的一张 m * n的乘法表&#xff0c;以及正整数k&#xff0c;你需要返回表中第k 小的数字。 例 1&#xff1a; 输入: m 3, n 3, k 5 输出…

获取类类型

//获得类类型的两种方式 1、 Class cls1 Role.class; 2、 Class cls2 Class.forName("yui.Role"); 注意第二种方式中&#xff0c;forName中的参数一定是完整的类名&#xff08;包名类名&#xff09;&#xff0c;并且这个方法需要捕获异常。 现在得到cl…

VUE:解决判断网页端与手机端情况下,横竖屏无法判断的问题

一、需求&#xff1a; 第一步&#xff1a;判断是网页端还是手机端 第二步&#xff1a;判断手机端&#xff0c;手机是横屏显示还是竖屏显示 二、解决方法&#xff1a; 监听网页端还是手机端 监听显示页面宽高变化 三、代码如下&#xff1a; methods: {_isMobile() {let f…

天池 在线编程 寻找比周围都大的点(模拟)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634587 给一个n*m大小的矩阵&#xff0c;寻找矩阵中所有比邻居&#xff08;上下左右&#xff0c;对角也算&#xff0c;不考虑边界就是8个咯&#xff09;都严格大的点。 返回一个…

前端笔试题总结---持续更新

写在前面&#xff1a;。。。。 1字符串逆序 function reverse(str){return str.split("").reverse().join("");//直接用函数var str1"";//从后向前输出for(var istr.length-1;i>0;i--){str1str[i];}return str1;var lenstr.length;//字符串原…

[原创][R语言]股票分析实战[4]:周级别涨幅趋势的相关性

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

前端:实现手机左右滑动效果

需求&#xff1a;手机可以左右滑动&#xff0c;显示商品或者div信息 原理&#xff1a;建立两个盒子&#xff0c;一个是可以看到的手机屏幕盒子&#xff0c;一个是自己设定好的盒子&#xff0c;左右滑动&#xff0c;只显示与手机屏幕盒子交集的部分 代码&#xff1a; <div …

天池 在线编程 双向取数(博弈DP)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634585 有一个长度为n的数列arr&#xff0c; 甲乙两个人每次可以从头或者从末尾取一个数&#xff0c;双方都想让自己取数之和尽量多&#xff0c; 甲先取数&#xff0c;问甲乙在…

利用索引数组排序 不改变原数组值的位置

1.定义一个和要排序数组a[10]长度一样的数组, 这里定义为10&#xff0c;index[10] {0&#xff0c; 1&#xff0c; 2&#xff0c; 3&#xff0c; 4&#xff0c; 5&#xff0c; 6&#xff0c; 7&#xff0c; 8&#xff0c; 9}&#xff0c;值为10个下标。 2. 用冒泡排序&#xff…

前端demo:实现背景半透明,div与文本正常显示

一、需求&#xff1a; 背景实现透明度0.3&#xff0c;其他组件正常显示 二、代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

天池 在线编程 布尔表达式求值(栈)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634588 给定一个字符串代表一个仅包含"true","false","or","and"的布尔表达式。 你的任务是将这个表达式的值求出&#xff0c;返回&q…

Schema详解

XML Schema 简介XSD 为何使用XML Schema 是基于 XML 的 DTD 替代者。XML Schema 可描述 XML 文档的结构。XML Schema 语言也可作为 XSD&#xff08;XML Schema Definition&#xff09;来引用。在继续学习之前&#xff0c;您需要对下面的知识有基本的了解&#xff1a;HTML / XHT…