Week 6 H (A - 氪金带东)(B - 戴好口罩!)(C - 掌握魔法の东东 I)(D - 数据中心)

2023-05-16

Week 6

  • A - 氪金带东
    • 题意
    • 思路
    • 代码
  • B - 戴好口罩!
    • 题意
    • 思路
    • 代码
  • C - 掌握魔法の东东 I
    • 题意
    • 思路
    • 代码
  • D - 数据中心
    • 题意
    • 思路
    • 代码

A - 氪金带东

题意

思路

首先,这个图是棵
解法:三遍DFS
前两遍用来寻找树的直径,第一遍找到直径的一个端点,第二遍记录每个点到这个端点的距离并寻找直径的另一个端点,第三遍记录每个点到另外一个端点的距离。最后输出两者的最大值即可。

代码

#include<iostream>
#include<cstring>
#define llong long long
#define For(i,a,n) for(register int i=a;i<=n;i++)
using namespace std;

const int maxn = 100005;

struct eg{
    int to, next;
    llong v;
}e[maxn];

llong n, tot, dia_len, dia_index;
llong head[maxn], vis[maxn], dis[maxn], tdis[maxn];

void add(int x, int y, llong v)
{
    e[++tot].to = y;
    e[tot].v = v;
    e[tot].next = head[x];
    head[x] = tot;
}

void dfs(int x)
{
    vis[x] = 1;
    if(dis[x]>=dia_len){
        dia_len = dis[x];
        dia_index = x;
    }
    for(int i = head[x];~i;i = e[i].next){
        int t = e[i].to;
        if(!vis[t]){
            vis[t] = 1;
            dis[t] = dis[x]+e[i].v;
            dfs(t);
        }
    }
}

void init()
{
    tot = 0; dia_len = 0; dia_index = 1;
    memset(head, -1, sizeof(head));
    memset(dis, 0, sizeof(dis));
    memset(vis,0,sizeof(vis));
}

int main(){
    ios::sync_with_stdio(false);
    while(cin>>n){
        init();
        For(i,2,n){
            int y;
            llong v;
            cin>>y>>v;
            add(i, y, v);
            add(y, i, v);
        }
        dfs(1);     
        memset(dis, 0, sizeof(dis));
        memset(vis,0,sizeof(vis));
        dfs(dia_index);
        For(i,1,n){
            tdis[i] = dis[i];
            dis[i] = 0;
            vis[i] = 0;
        }
        dfs(dia_index);
        For(i,1,n){
            cout<<max(dis[i],tdis[i])<<endl;
        }
    }

    return 0;
}

B - 戴好口罩!

题意

在这里插入图片描述

思路

并查集
好像没什么好说的

代码

#include<iostream>
#include<cstring>
#define llong long long
#define For(i,a,n) for(register int i=a;i<=n;i++)
using namespace std;

const int maxn = 100005;

int n, m, ans;
int pre[maxn];
int find(int x){
    return pre[x] = (pre[x] == x ? x : find(pre[x]));
}

int main(){
    ios::sync_with_stdio(false);
    while(cin>>n>>m){
        ans = 1;
        if(!n && !m) break;
        For(i,0,n-1) pre[i] = i;
        For(i,1,m){
            int tot, fst;
            cin>>tot>>fst;
            For(i,1,tot-1){
                int num;
                cin>>num;
                if(pre[num] == num)
                    pre[num] = find(fst);
                else
                    pre[find(num)] = find(fst);
                fst = num;
            }
        }
        For(i,1,n-1){
            if(find(0)==find(i))
                ans++;
        }
        cout<<ans<<endl;
    }
    
    return 0;
}

C - 掌握魔法の东东 I

题意

思路

看似有向图其实无向图
最小生成树
这题需要添加一条从0号农田开始的边(处理“黄河之水天上来”)
用到Kruskal算法(每次选最短的边),用并查集来保证选的边不成环。
总共选择n条边(从0开始)

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#define llong long long
#define For(i,a,n) for(register int i=a;i<=n;i++)
using namespace std;

const int maxn = 100005;

struct eg{
    int to, from;
    int v;
    bool operator < (const eg& e) const{
        return v<e.v;
    }
}e[maxn];

int n, tot, w, ans, cnt;
int pre[maxn];

void add(int x, int y, int v)
{
    e[++tot].from = x;
    e[tot].to = y;
    e[tot].v = v;
}

void init()
{
    tot = 0;
    For(i,1,n)
        pre[i] = i;
}

int find(int x) {return pre[x] = (pre[x]==x?x:find(pre[x]));}

void Kruskal()
{
    sort(e+1,e+tot+1);
    For(i,1,tot){
        int u = e[i].from;
        int v = e[i].to;
        int pu = find(u), pv = find(v);
        if(pu!=pv){
            cnt++;
            ans+=e[i].v;
            pre[pu] = pv;
        }
        if(cnt==n) break;
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin>>n;
    init();
    For(i,1,n){
        cin>>w;
        add(0,i,w);
    }
    For(i,1,n){
        For(j,1,n){
            cin>>w;
            if(i!=j) add(i,j,w);
        }
    }
    Kruskal();
    cout<<ans<<endl;
    return 0;
}

D - 数据中心

题意

在这里插入图片描述

思路

还是一道最小生成树的题,思路和第三题基本相同。
这题和刚刚那题的不同之处在于:
C题是取和,这题是取最大值,也就是最小生成树中最长的边

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#define llong long long
#define For(i,a,n) for(register int i=a;i<=n;i++)
using namespace std;

const int maxn = 200005;

struct eg{
    int to, from;
    int v;
    bool operator < (const eg& e) const{
        return v<e.v;
    }
}e[maxn];

int n, m, r, tot, u, v, w, ans, cnt;
int pre[maxn];

void add(int x, int y, int v)
{
    e[++tot].from = x;
    e[tot].to = y;
    e[tot].v = v;
}

void init()
{
    tot = 0;
    For(i,1,n)
        pre[i] = i;
}

int find(int x) {return pre[x] = (pre[x]==x?x:find(pre[x]));}

void Kruskal()
{
    sort(e+1,e+tot+1);
    For(i,1,tot){
        int u = e[i].from;
        int v = e[i].to;
        int pu = find(u), pv = find(v);
        if(pu!=pv){
            cnt++;
            ans = max(ans, e[i].v);
            pre[pu] = pv;
        }
        if(cnt==n-1) break;
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin>>n>>m>>r;
    init();
    For(i,1,m){
        cin>>u>>v>>w;
        add(u,v,w);
        add(v,u,w);
    }
    Kruskal();
    cout<<ans<<endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Week 6 H (A - 氪金带东)(B - 戴好口罩!)(C - 掌握魔法の东东 I)(D - 数据中心) 的相关文章

  • Week6限时大模拟 A - 掌握魔法の东东 II [Gym - 270437J]

    原题链接 https vjudge net problem Gym 270437J origin 题意 基本思路 本题数据规模不大 xff0c A B 100 A B 100
  • CCF 201812-4 数据中心 Java

    一 题目 问题描述 试题编号 xff1a 201812 4试题名称 xff1a 数据中心时间限制 xff1a 1 0s内存限制 xff1a 512 0MB问题描述 xff1a 样例输入 4 5 1 1 2 3 1 3 4 1 4 5 2 3
  • A - 掌握魔法の东东 II(Week6模拟考试)

    题目 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c 记为a xff0c 范围区间是 0 到 A 1 xff09 和
  • WEEK 5 B TT's Magic Cat

    题目 xff1a Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a magic
  • CCF201812-4 数据中心

    试题编号 xff1a 201812 4试题名称 xff1a 数据中心时间限制 xff1a 1 0s内存限制 xff1a 512 0MB问题描述 xff1a 样例输入 4 5 1 1 2 3 1 3 4 1 4 5 2 3 8 3 4 2 样
  • 掌握魔法の东东 II(模拟)

    问题描述 hspace 17pt 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 hspace 17pt 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c
  • D-数据中心

    D 数据中心 一 题目描述 Example Input 4 5 1 1 2 3 1 3 4 1 4 5 2 3 8 3 4 2 Output 4 Note 二 思路与算法 本题核心算法为并查集 43 Kruskal算法 回忆Kruskal算
  • 【Week 14 作业E】Q老师度假

    题目描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获得
  • 【Week 15 作业B】ZJM与生日礼物

    题目描述 ZJM 收到了 Q老师 送来的生日礼物 xff0c 但是被 Q老师 加密了 只有 ZJM 能够回答对 Q老师 的问题 xff0c Q老师 才会把密码告诉 ZJM Q老师 给了 ZJM 一些仅有 01 组成的二进制编码串 他问 ZJ
  • 【Week 16】CSP-M4

    TT数鸭子 题目描述 输入输出描述 样例 思路 对每个数字按数位进行遍历 xff0c 求取不重复数字个数即可 代码 span class token macro property span class token directive key
  • Week 14 E - Q老师度假

    Q老师度假 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获
  • A - 掌握魔法の东东 II

    题意介绍 共有九种牌型 xff0c 先拿出两张牌 xff0c 问每种牌型的可能数 题意分析 用三个for循环对所有组合进行遍历 xff0c 每得到一个组合对这五张牌进行排序 xff0c 看他符合哪一种牌型 xff0c 要注意用 低序号优先
  • week6 限时大模拟 A - 掌握魔法の东东 II

    题意 思路 创建一个pair lt int int gt 类型的数组a xff0c 用来保存一副牌的花色以及大小 运用stl的vector xff0c 来存储手牌shoupai xff0c 随后使用dfs搜索 xff0c 数组a里的牌在手牌
  • Week6限时模拟-掌握魔法の东东 II

    week6限时模拟 掌握魔法 东东 II 思路 xff1a 考虑使用结构体表示牌 xff0c 使用数组表示所有牌 xff0c 之后问题转化为从A B张牌中选出三张牌 xff0c 并且三张牌不是初始的两张牌 xff0c 对于5张牌进行判断类型
  • 掌握魔法の东东 II Gym-270437

    题目 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c 记为a xff0c 范围区间是 0 到 A 1 xff09 和
  • 计算机机房英文术语,【数据中心】数据中心常见中英术语及解释

    原标题 xff1a 数据中心 数据中心常见中英术语及解释 一 常见中文术语 1 数据中心 为一个建筑群 建筑物或建筑物中的一个部分 xff0c 主要用于容纳设置计算机房及其支持空间 2 进线间 外部缆线引入和电信业务经营者安装通信设施的空间
  • Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因

    Java中对日期的处理需要用到Calendar类 xff0c 其中有几个方法在使用时需要新手注意 1 在获取月份时 xff0c Calendar MONTH 43 1 的原因 xff08 Java中Calendar MONTH返回的数值其实
  • 动态建立Vxlan实现隧道跨子网互访实验配置(集中式网关场景)

    目录 基础配置 配置E V P N 在CE1 CE2 CE3开启E V P N功能 建立CE1 CE2 CE3之间的E V P N对等体 创建BD域并配置EVPN实例 选择报文进入Vxlan隧道 配置发送Type3路由 创建三层网关的Vbd
  • 阿里云发生故障,网友炸了,官方回应道歉。对此事你怎么看?

    阿里云工程师又 惹祸 鸡蛋放在一个篮子里是对是错 昨天 阿里云的工程师又 惹祸 了 27日下午 16 30 左右 微信朋友圈 微信群 微博陆续出现阿里云故障的消息 网友表示 访问阿里云官方显示502错误 即使偶尔打开页面 控制台也无法正常登
  • 未来数据中心核心技术:RDMA在京东的应用

    近日 由京东IT资源服务部组织的未来数据中心核心技术研讨会活动 在京东成功举办 活动邀请了京东人工智能 大数据 云计算团队的多位研发总监 技术骨干人员一同参与 在研讨会上 大家针对目前很火的RDMA 高性能网络相关话题 展开深入讨论 特别是

随机推荐

  • 基于python批量调整图像大小

    前言 在写论文的时候常常因为截图的尺寸大小不一样 xff0c 导致图片排版很难受 xff0c 在word中又不会批量修改 xff0c 用下面的代码可以批量处理修改成一样的尺寸哦 xff01 代码如下 xff1a 在本文中 xff0c 我将向
  • Nginx 命令

    nginx 启动Nginx nginx s reopen 重启Nginx nginx s reload 重新加载Nginx配置文件 xff0c 然后以优雅的方式重启Nginx nginx s stop 强制停止Nginx服务 nginx s
  • jieba,为中文分词而生的Python库

    jieba xff0c 为中文分词而生的Python库 中文分词 xff0c 通俗来说 xff0c 就是将一句 段 话按一定的规则 算法 拆分成词语 成语 单个文字 中文分词是很多应用技术的前置技术 xff0c 如搜索引擎 机器翻译 词性标
  • MDK的内嵌汇编与内联汇编

    内联汇编 asm 34 指令 34 这是内联汇编 而MDK下 xff0c 内联汇编仅支持ARM汇编语言 xff0c 不支持Thumb或者Thumb 2汇编语言 xff0c 但内嵌汇编器支持Thumb和Thumb 2 STM32的core c
  • 【李刚-21天通关Python-08】之 字典

    李刚 21天通关Python 08 之 字典 一 字典的概念 1 字典用于保存具有映射关系的数据 xff0c 字典相当于保存了两组数据 xff0c 其中一组数据被称为key xff0c 另一组数据可通过key来访问 xff0c 被称为val
  • 按键精灵 百度文字识别(百度ocr)OCRSpace文字识别

    目录 1 申请百度OCR服务1 1 百度OCR登录1 2 创建新应用1 3 免费领取次数1 3 查看是否创建成功 2 按键精灵运用百度OCR接口2 1 通用文字识别 xff08 高精度版 xff09 文档2 1 1 接口描述2 1 2 请求
  • Ubuntu系统扩大/home分区

    gparted是一款免费 开源的Linux下的具有图形用户界面的分区软件 在Ubuntu中 xff0c 可以使用如下命令安装 xff1a sudo apt get install gparted 之后就可以使用如下命令启动gparted s
  • sqlsever导入sql文件

    sqlsever导入sql文件 新建一个数据库 xff0c 数据库名与到导入的文件的数据库名一致 把文件拖入当前窗口 xff0c 把创建表的语句删除 xff0c creat table到go语句之前 xff08 因为创建表的路径不一样 xf
  • Python接口自动化——自动化测试分层(1)

    从本期开始 xff0c 我们会围绕 Python接口自动化 做专题连载 xff0c 今天开始做第一讲 自动化测试分层 目录 xff1a 1 1 1 1 单元自动化测试 2 1 1 2 接口自动化测试 3 1 1 3 UI自动化测试 现在流行
  • C++快读模板(读入整型数据)

    先上代码 span class token macro property span class token directive keyword include span span class token string lt iostream
  • Linux安装jenkins2.3详解

    Linux安装jenkins2 3详解 下载 官网下载jenkins xff0c 我们选择rpm包进行安装 xff1a 地址 xff1a https mirrors jenkins ci org redhat https get jenki
  • 程序设计思维 week4 作业C-TT 的神秘礼物

    题目 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务
  • 程序设计思维 week11 作业E-东东与ATM

    题目 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机器都有n k张钞
  • 程序设计思维 CSP-M3

    T1 瑞神的数列 题目 Sample Input 12 2 3 3 6 6 6 1 1 4 5 1 4 Sample Output 8 思路 利用vector xff0c 使用vector lt int gt v储存数字 若v为空 xff0
  • ubuntu一段时间后突然无法上网

    在VMware中安装Ubuntu虚拟机 xff0c 总会发生无法上网的情况 xff0c 主要情况有以下几点 xff1a 宿主机可以上网 xff1b 虚拟机却无法访问网页虚拟机ping不通任何网站 xff0c 用浏览器显示error 一般情况
  • STM32 - 使用 HAL 库实现软件模拟 I2C

    不要让自己太懒的个人空间 I2C 的两个引脚 xff08 SCL 引脚和 SDA 引脚 xff09 需要既能输出又能输入 xff0c 为了避免复杂的配置操作需要把该引脚配置为开漏输出模式 xff0c 该模式的说明如下图所示 xff1a 当单
  • 二进制基础:补码,左移,右移

    binary 引入为什么要有补码特殊的值溢出数学移位逻辑位移逻辑右移的应用 引入 二进制是计算机的基础 xff0c 追根溯源还是因为Si的半导体性 除了二进制 xff0c 还有十六进制 xff0c 它是简化二进制的表示 做个测试 xff1a
  • GitLab配置SSH key

    1 我们已经有了gitlab的账户 xff0c 项目组已经将我们添加到了group 2 打开git bash xff0c 输入命令 ls al ssh 如果显示如下图 xff1a 则表示生成过key 可以去执行第4个步骤 否则的话执行第三个
  • centos误删python2后怎么重新安装

    此教程为离线安装 一 先查询系统版本 cat proc version Linux version 3 10 0 1127 el7 x86 64 mockbuild 64 kbuilder bsys centos org gcc versi
  • Week 6 H (A - 氪金带东)(B - 戴好口罩!)(C - 掌握魔法の东东 I)(D - 数据中心)

    Week 6 A 氪金带东题意思路代码 B 戴好口罩 xff01 题意思路代码 C 掌握魔法 东东 I题意思路代码 D 数据中心题意思路代码 A 氪金带东 题意 思路 首先 xff0c 这个图是棵树 解法 xff1a 三遍DFS 前两遍用来