程序设计作业之C - 掌握魔法の东东 I和D-数据中心

2023-05-16

程序设计作业

  • C - 掌握魔法の东东 I
  • D-数据中心

C - 掌握魔法の东东 I

东东在老家农村无聊,想种田。农田有 n 块,编号从 1~n。种田要灌氵

众所周知东东是一个魔法师,他可以消耗一定的 MP 在一块田上施展魔法,使得黄河之水天上来。他也可以消耗一定的 MP 在两块田的渠上建立传送门,使得这块田引用那块有水的田的水。 (1<=n<=3e2)

黄河之水天上来的消耗是 Wi,i 是农田编号 (1<=Wi<=1e5)

建立传送门的消耗是 Pij,i、j 是农田编号 (1<= Pij <=1e5, Pij = Pji, Pii =0)

东东为所有的田灌氵的最小消耗
在这里插入图片描述
输入

4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0

输出
9

kruskal算法和并查集,关于Kruskal算法可以看我的另一篇博客:

Kruskal最小生成树算法
(写得不好,望指摘(#^.^#)

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
int host[310];//农田编号 
int n,mass,lop=0,sum=0;//农田数量,天外加水重量,lop,结果 
int px,py;
struct edge{
 int u,v,w;//起点,到达点,权重
 bool operator<(const edge &eg){
  return w<eg.w;//按照权重升序排序 
 } 
};
edge e[maxn];
void add_edge(int start,int to,int wei){
 e[lop].u=start;
 e[lop].v=to;
 e[lop].w=wei;
 lop++;
}
int unionsearch(int root){
 int son,temp;
 son=root;
 while(root != host[root]) 
  root=host[root]; 
 while(son != root){ 
  temp=host[son];
  host[son]=root;
  son=temp;
 } 
 return root;
} 
void kruskal(){//克鲁斯卡算法 
 sort(e,e+lop);//排序找到最小的权重 
 int tag=0;
 for(int i=0;i<lop;i++){
  if(tag==n) break;//没有农田 
  px=unionsearch(e[i].u);py=unionsearch(e[i].v);
  if(px != py){//如果两个点不在一棵树 
   host[py]=px;
   tag++; 
   sum+=e[i].w;
  }
 }
 cout<<sum<<endl;
}
int main(){
 ios::sync_with_stdio(false);
 cin>>n;
 for(int i=0;i<=n;i++)
  host[i]=i;
 for(int i=1;i<=n;i++){
  cin>>mass;
  add_edge(0,i,mass);
  add_edge(i,0,mass);
 }
 for(int i=1;i<=n;i++){
  for(int j=1;j<=n;j++){
   cin>>mass;
   add_edge(i,j,mass);
  }
 }
 kruskal();
 return 0; 
}

D-数据中心

在一个集中式网络中,存在一个根节点,需要长时间接收其余所有节点传输给它的反馈数据。
[题目描述]
存在一个n节点的网络图,编号从1到n。该网络的传输是全双工的,所以是无向图。
如果两节点Vi , Ui 相连,表明Vi , Ui 之间可以互相收发数据,边权是传输数据所需时间 ti 。现在每个节点需要选择-条路径将数据发送到root 号节点。希望求出一个最优的树结构传输图,使得完成这个任务所需要的时间最少。root 节点只能接收数据,其余任何一个节点可以将数据传输给另外的一一个节 点,但是不能将数据传输给多个节点。
所有节点可以接收多个不同节点的数据。
一个树结构传输图的传输时间为Tmax,其中Tmax = max(Th), h为接收点在树中的深度,Th= max(th,j), th,j 表示 j 条不同的边,这 j 条边接收点的深度都为h。
[输入格式]
从标准输入读入数据。
输入的第1行包含一个正整数n,保证n≤5x 10^4。
输入的第2行包含一个正整数m,保证m≤10^5.
输入的第3行包含一个正整数root,保证roo≤5x 10^4。
[输出格式]
输出到标准输出。
输出仅有一行, 包含一个 正整数ans,表示最优的树结构流水线所耗时Tmax。
在这里插入图片描述
图片
在这里插入图片描述
在这里插入图片描述
Example
Input
4
5
1
1 2 3
1 3 4
1 4 5
2 3 8
3 4 2

Output

4

解:首先明确了题意就简单了,这道题运用并查集和Kruskal算法,利用贪心
把最大的边去掉,保留最小边,那么再求出最小中的最大
然后这道题太模糊了,自己画了一张图,2333

代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=5e4+10; 
int pre[maxn];
int n,m,root;//n个节点,m 条边,根节点 
int px,py,ans=0;
struct edge{
 int u,v,w;//起点,到达点,权重
 bool operator<(const edge &eg){
  return w<eg.w;//按照权重升序排序 
 } 
};
edge e[maxn*2];
int unionsearch(int rot){
 int son,temp;
 son=rot;
 while(rot != pre[rot]) 
  rot=pre[rot]; 
 while(son != rot){ 
  temp=pre[son];
  pre[son]=rot;
  son=temp;
 } 
 return rot;
} 
void kruskal(){//克鲁斯卡算法 
 sort(e+1,e+m+1);//排序找到最小的权重 
 int tag=0;
 for(int i=1;i<=m;i++){
  px=unionsearch(e[i].u);py=unionsearch(e[i].v);
  if(px != py){ //木有成环,可以构成树 
   pre[py]=px;
   ans=max(ans,e[i].w);
   tag++; 
  }
  if(tag==n-1) break;
 }
 cout<<ans<<endl;
}
int main(){
 ios::sync_with_stdio(false);
 cin>>n>>m>>root;
 for(int i=1;i<=n;i++)
  pre[i]=i;//每个节点都是祖宗 
 for(int i=1;i<=m;i++)//输入起点,到达点,边权,即构造图过程 
  cin>>e[i].u>>e[i].v>>e[i].w;
 kruskal();
 return 0; 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序设计作业之C - 掌握魔法の东东 I和D-数据中心 的相关文章

  • C++函数返回多个值:结构体、tuple

    C 43 43 函数一般可以返回一个值 xff0c 但是在使用中常常需要一个函数返回多个值 xff0c 因此可以使用结构体或tuple来进行实现 注意看代码里的注释 xff01 xff01 xff01 1 使用结构体返回多个值 实现步骤 x
  • 【GStreamer 】1-扫盲介绍

    从历史的角度来看 xff0c Linux 在多媒体方面已经远远落后于其它的操作系统 微软的Windows和苹果的MacOS它们对多媒体设备 多媒体创作 播放和实时处理等方面已经有了很好的支持 另一方面 xff0c Linux对多媒体应用的综
  • C++判断文件是否存在

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • PCL编译完成后找不到库

    使用执行命令L g 43 43 std 61 c 43 43 14 I usr local include pcl 1 8 I usr local include eigen3 main cpp o test111 其中 std 61 c
  • docker安装及使用,常用命令总结

    1 安装 参考官方教程 xff1a https docs docker com engine install ubuntu 有三种安装方法 xff1a Install using the repository Install from a
  • CMakeLists.txt中相关指令和含义

    语法格式 xff1a 指令 xff08 参数1 参数2 xff09 参数使用括号括起来 参数之间使用空格或分号分开 指令大小写无关 xff0c 参数和变量大小写有影响 重要指令 1 cmake minimum required xff1a
  • ubuntu 18.04安装nvidia驱动后,电脑开机失败

    安装驱动后电脑开机失败 xff0c 恢复到安装驱动之前的状态 xff1a 在nvidia 官网 https www nvidia com Download index aspx 下载显卡驱动 xff0c 并安装成功后重启电脑发现电脑重启失败
  • c++ CUDA nvcc编译问题

    安装了cuda10 1 xff0c 使用cuda编译代码时 xff0c 显示 xff1a Cannot get compiler information span class token operator span Compiler exi
  • PCL库点云小知识

    1 计算极值点 include lt pcl io pcd io h gt include lt pcl point types h gt include lt pcl common common h gt pcl PointCloud l
  • PCL Windows 安装

    参考文章 xff1a https blog csdn net weixin 44244190 article details 124324121 我的环境为 xff1a python3 6 xff0c visual studio 2019
  • 使用mmdetection3d预测自己采集的数据遇到的问题

    预测结果是这样的 xff1a 点云数据原图是这样的 xff1a 红色框出的为真实的car类别 xff1a 已解决 xff0c 请查看mmdetection3d issue
  • ubuntu18.04 cuda卸载及安装

    1 若电脑上已经安装了其他版本的cuda及显卡驱动 xff0c 需要完全卸载并删除相关文件 xff0c 否则会导致安装不成功 xff0c 执行如下 xff1a 1 1卸载cuda 步骤如下 cd usr local cuda xx x bi
  • 【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数

    v4l2是Video4linux2的简称 xff0c 是linux中关于视频设备的内核驱动 xff0c 在Linux中 xff0c 视频设备是设备文件 xff0c 可以像访问普通文件一样对其进行读写 xff0c 摄像头设备文件位置是 dev
  • 使用conda安装Paddle3D时出现的报错及解决方式

    1 cmake时 usr bin ld cannot find lxxx问题 如 xff1a usr bin ld cannot find lleveldb usr bin ld cannot find lsnappy 解决方法 xff1a
  • git安装及使用常用命令

    1 安装 Ubuntu xff1a apt get install git Windows xff1a 官网下载地址 xff1a https gitforwindows org xff0c 也可以用国内镜像 xff1a https npm
  • 如何设置才能提升VMware虚拟机的显卡性能

    将本机的intel和NVIDIA显卡驱动更新为最新版本 使用最新的VMware Workstation pro 12 5 处理器中 xff0c 选择8个核心 xff0c 勾选下面两个虚拟化
  • 程序设计思维与实践 CSP-M3 补题 (3/4/数据班)

    程序设计思维与实践 CSP M3 A csp m3 t1题目分析代码 B csp m3 t2题意分析代码 T4 咕咕东学英语题意 分析代码 A csp m3 t1 题目 瑞神的数学一向是最好的 xff0c 连强大的咕咕东都要拜倒在瑞神的数学
  • Centos7搭建Samba文件共享服务

    编辑本地yum源 root 64 localhost vim etc yum repos d local repo Centos7 name 61 CentOS Local baseurl 61 file mnt gpgcheck 61 0
  • IS-IS协议原理与配置

    IS IS 中间系统到中间系统协议 xff1a 基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议 基于802 3封装 IS IS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议 为了提供对IP的路由
  • 数据库关系代数表达式学习

    一 关系代数的9种操作 xff1a 关系代数中包括了 xff1a 并 交 差 乘 选择 投影 联接 除 自然联接等操作 五个基本操作 xff1a 并 差 笛卡尔积 投影 选择 四个组合操作 xff1a 交 联接 等值联接 自然联接 RS 除

随机推荐

  • 手把手教你从阿里云到idea的短信服务怎么玩.给你女朋友发一条是不是贼帅?

    短信服务 1 1打开阿里云 创建成功就会有 总结阿里云 1 开启子用户 2 新建用户组 设置添加权限 3 创建一个用户 具体用来操作的账号 4 得到AccessKey id 密码 61 61 注意 保存账号 61 61 如果泄露 用户组下禁
  • week16——实验(csp_m4)

    目录 TT数鸭子 xff1a 问题描述题目简述输入 输出格式样例 问题分析解题思路参考代码 心得体会 ZJM要抵御宇宙射线 xff1a 问题描述题目简述输入 输出格式样例 问题分析解题思路参考代码 心得体会 宇宙狗的危机 xff1a 问题描
  • Gstreamer 应用开发:1-基础介绍

    我们之前的系列 xff0c 正式的介绍了Gstreamer xff0c 并且围绕如何使用USB相机推流实现RTSP服务器来做了介绍 xff0c 并在Jeston TX1 平台上做了优化急速的一些探索 今天我们开始围绕如何用命令实现一个音视频
  • 【蓝桥杯】单片机学习(3)——数码管的显示+定时器+中断

    数码管 43 定时 43 中断 一 定时器1 定时器基础知识2 定时器的寄存器 xff08 TCON amp TMOD xff09 3 定时器的应用 二 中断1 中断的概念2 51单片机内与中断控制有关的寄存器3 中断的响应条件及应用 三
  • 什么是程序的耦合

    耦合性 Coupling xff0c 也叫耦合度 xff0c 它是对模块间关联程度的度量 在软件工程中 xff0c 耦合指的就是对象之间的依赖关系 对象之间的耦合越高 xff0c 则表明模块的独立性和可复用性越差 xff0c 且维护成本越高
  • 对比BeanFactory和ApplicationContext的关系

  • JDBC的API----Connection

    作用 xff1a 1 获取执行sql的对象 2 管理事务 获取连接对象 Connection conn 61 DriverManager getConnection String url String name String passwor
  • 数据库连接池----Druid

    数据库连接池的标准接口 xff1a DataSource 获取连接的方法 xff1a Connection getConnection Druid是Java最好的数据库连接池之一 Druid数据库连接池的使用步骤 xff1a 1 导入jar
  • Java--IP地址操作类----InetAddress

    此类表示IP地址 InetAddress API xff1a public class InetAddressDemo01 public static void main String args throws IOException 1 获
  • MyBatis----映射文件概述

    创建映射文件时一定要给映射文件添加约束头 xff0c 约束头相对固定 xff0c 可以直接复制 xff1a lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt DOCTYPE
  • 如何使用MyBatis

    1 创建user表 xff0c 添加数据 CREATE DATABASE mybatis USE mybatis DROP TABLE IF EXISTS tb user CREATE TABLE tb user id INT PRIMAR
  • Mapper代理开发

    1 定义与SQL映射文件同名的Mapper接口 xff0c 并且将Mapper接口和SQL映射文件放置在同一目录下 2 设置SQL映射文件的namespace属性为Mapper接口的全限定名 lt mapper namespace 61 3
  • Windows连接远程Ubuntu RDP

    一 配置远程Ubuntu 1 安装 TrigerVNC Server sudo apt install tightvncserver 2 安装xrdp sudo apt install xrdp 查看运行状态 sudo systemctl
  • 【EHub_tx1_tx2_E100】Ubuntu18.04 + ROS_ Melodic + 银牛R132深度相机(如何在该环境下打开摄像机获取rgb/深度图/点云)

    简介 xff1a 介绍银牛微电子 3D 机器视觉R132相机 在EHub tx1 tx2 E100载板 xff0c TX1核心模块环境 xff08 Ubuntu18 04 xff09 下测试ROS驱动 xff0c 打开摄像头图像和查看深度图
  • week5 作业B TT's Magic Cat

    TT s Magic Cat Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a
  • week8 CSP模拟C 咕咕东的奇妙序列

    咕咕东的奇妙序列 有一个序列11212312341234512345612345671234567812345678912345678910 特点为由若干部分组成 每一部分si为1 i所有数字 给出q q lt 61 500 次查询 每次查
  • week9 作业B 东东学打牌

    东东学打牌 最近 xff0c 东东沉迷于打牌 所以他找到 HRZ ZJM 等人和他一起打牌 由于人数众多 xff0c 东东稍微修改了亿下游戏规则 xff1a 所有扑克牌只按数字来算大小 xff0c 忽略花色 每张扑克牌的大小由一个值表示 A
  • week11 E - 选做题11-1 东东与 ATM

    选做题11 1 东东与 ATM 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xf
  • week13 C - TT 的奖励(必做)

    TT 的奖励 xff08 必做 xff09 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天
  • 程序设计作业之C - 掌握魔法の东东 I和D-数据中心

    程序设计作业 C 掌握魔法 东东 ID 数据中心 C 掌握魔法 东东 I 东东在老家农村无聊 xff0c 想种田 农田有 n 块 xff0c 编号从 1 n 种田要灌氵 众所周知东东是一个魔法师 xff0c 他可以消耗一定的 MP 在一块田