当前位置: 首页 > news >正文

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)

文章目录

  • 1.病毒溯源
    • 问题:求树的最长链长度和字典序最小的最长链
    • 思路:
  • 2.龙龙送外卖
    • 思路:
  • 3.红色警报:
    • 思路:

1.病毒溯源

问题:求树的最长链长度和字典序最小的最长链

思路:

一开始用 bfs 做的 , 一直是段错误 , 很迷惑 , 最后换成了 dfs , 深搜比广搜使用的空间少。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
const int N = 1e4+10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;
const int inf = 1 << 31 - 1;
const double eps = 1e-9;int n , c , k , root , mx;
vector<int>ve[N];
bool vis[N];
vector<int>ans , now;void dfs(int id,int h){if(h > mx){ mx = h; ans = now; }for(auto k : ve[id]){now.push_back(k);dfs(k , h + 1);now.pop_back();}	
}int main(){cin >> n;for(int i=0;i<n;i++){cin >> c;for(int j=1;j<=c;j++){cin >> k;vis[k] = 1;ve[i].push_back(k);}sort(ve[i].begin(),ve[i].end());//排序 , 保证最先遇到的最长串一定是字典序最小的;}for(int i=0;i<n;i++) if(!vis[i]) now.push_back(i) , dfs(i,1);cout << mx << "\n";//	for(auto k : ans) cout << k << " ";for(int i=0;i<(int)ans.size();i++){if(i != (int)ans.size() - 1)cout << ans[i] << " ";else cout << ans[i];}	return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

2.龙龙送外卖

思路:

送餐完成后不返回起点的最小距离 = 总距离 - 最深节点深度

所以原问题分解成了两个问题:
第一个问题是要求总距离 , 也就是到达所有节点需要的边数 × 2
第二个问题就是要求 : 最深节点的深度

如果我们每加入一个节点都从根节点开始搜索 , 搜索上面的两个值 , 不仅费力 , 而且会TLE ,这样就需要我们用另一种思路 , 那就是“反着搜” , 当加入某个节点时 , 从当前节点往根节点搜 , 我们结合记忆化搜索 , 就很轻松地可以求出当前节点的深度 , 而到达所有节点需要的边数也就变成了前面所有点到达根节点经过的不同点的数量

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
const int N = 1e5+10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;
const int inf = 1 << 31 - 1;
const double eps = 1e-9;int n , m , u , mx_h , all;
int fa[N] , h[N];int dfs(int x){if(fa[x] == -1 || h[x]) return h[x];//记忆化搜索记录深度all++;//记录不同的节点数return h[x] = dfs(fa[x]) + 1;
}int main(){IOScin >> n >> m;for(int i=1;i<=n;i++) cin >> fa[i];for(int i=1;i<=m;i++){cin >> u;mx_h = max(mx_h , dfs(u));cout << all * 2 - mx_h << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

3.红色警报:

思路:

根据题意的描述 , 不难看出描述出来的是一个并查集的逆过程:从联通集里拆点 , 问拆到那个点会使联通集变多(发出红色警报);
正着想肯定是没什么思路 , 不如我们反着想 , 就是找加入哪些点会使联通集变少 , 这就正好是并查集的过程 , 所以题解就是按照拆点的逆序去做合并 , 找到我们的目标点;

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
const int N = 5e2+10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;
const int inf = 1 << 31 - 1;
const double eps = 1e-9;int n , m , k , u;
vector<int>ve[N];
int fa[N] , a[N] , dp[N];
bool vis[N];
map<int,int>mp;int find(int x){if(fa[x] == x) return x;else return fa[x] = find(fa[x]);
}void unionn(int x,int y){int xx = find(x);int yy = find(y);fa[xx] = yy;
}int main(){cin >> n >> m;for(int i=0;i<n;i++) fa[i] = i;for(int i=1;i<=m;i++){int u , v;cin >> u >> v;ve[u].push_back(v);ve[v].push_back(u);}cin >> k;for(int i=1;i<=k;i++) cin >> a[i] , mp[a[i]] = 1;int cnt = k;for(int i=0;i<n;i++){if(!mp[i]) a[++cnt] = i; }//注意不要漏掉 k 个点之外的点for(int i=cnt;i>=1;i--){u = a[i];for(auto s : ve[u]) if(vis[s]) unionn(u,s);vis[u] = 1;for(int j=0;j<n;j++) if(j == find(j) && vis[j]) dp[i]++;}for(int i=1;i<=k;i++){	//拆点之后联通集变多if(dp[i] < dp[i+1]){cout << "Red Alert: ";	printf("City %d is lost!\n",a[i]);}else{printf("City %d is lost.\n",a[i]);	}//注意处理 全部城市都毁灭if(i == n) cout << "Game Over.";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

相关文章:

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)

文章目录1.病毒溯源问题&#xff1a;求树的最长链长度和字典序最小的最长链思路&#xff1a;2.龙龙送外卖思路&#xff1a;3.红色警报&#xff1a;思路&#xff1a;1.病毒溯源 问题&#xff1a;求树的最长链长度和字典序最小的最长链 思路&#xff1a; 一开始用 bfs 做的 &a…...

917. 仅仅反转字母

917. 仅仅反转字母https://leetcode.cn/problems/reverse-only-letters/ 难度简单189 给你一个字符串 s &#xff0c;根据下述规则反转字符串&#xff1a; 所有非英文字母保留在原有位置。所有英文字母&#xff08;小写或大写&#xff09;位置反转。 返回反转后的 s 。 示例…...

Linux-Git

一、总论 1.1 写在前面的话 ​ 这已经是我第三遍学Git相关操作了&#xff0c;可以说这个玩意是真的狗&#xff0c;因为确实用不到&#xff0c;不知道下个学期会不会用到&#xff0c;直到现在我刚刚学完&#xff0c;处于知识水平的巅峰&#xff0c;知道Git的具体功能&#xff…...

leetcode:2273. 移除字母异位词后的结果数组(python3解法)

难度&#xff1a;简单 给你一个下标从 0 开始的字符串 words &#xff0c;其中 words[i] 由小写英文字符组成。 在一步操作中&#xff0c;需要选出任一下标 i &#xff0c;从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件&#xff1a; 0 < i < words.l…...

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…...

4.4---Spring框架之Spring事务(复习版本)

Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;spring是无法提供事务功能的。 Spring只提供统一事务管理接口&#xff0c;具体实现都是由各数据库自己实现&#xff0c;数据库事务的提交和回滚是通过 redo log 和 undo log实现的。 S…...

IP-Guard是否支持禁止客户端电脑卸载指定软件?

哪些浏览器支持设置窗口水印? 支持的浏览器有:搜狗浏览器、360安全浏览器、360极速浏览器、qq浏览器、谷歌浏览器、ie浏览器、edge浏览器 注意: 1.目标URL窗口水印不支持Firefox浏览器和猎豹浏览器 2.搜狗浏览器在兼容模式下,目标URL窗口水印不生效 3.部分浏览器(360安全…...

系统图标形状overlayapk

时间&#xff1a;2020/10/10 之前公司不允许csdn&#xff0c;笔记写在其它地方。最近整理过来 1、图标形状的overlay frameworks\base\packages\overlays目录 2、某一种形状的源码 默认配置在framework/base/core/res/res res下面放着图标形状的mask路径,这个值是一个矢量图…...

辅助编程coding的两种工具:Github Copilot、Cursor

目录Cursor简介下载地址&#xff1a;使用技巧&#xff1a;CHAT:example 1&#xff1a;注意&#xff1a;example 2&#xff1a;Github Copilot官网简介以插件方式安装pycharm自动写代码example 1&#xff1a;写一个mysql取数据的类example 2&#xff1a;写一个多重共线性检测的类…...

MySQL5.7安装教程

1.鼠标右击【MySQL5.7】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 MySQL5.7】 2.打开解压后的文件夹&#xff0c;双击运行【mysql-installer-community-5.7.27.0】 3.勾选【I accept the license terms】&#xff0c;点击【Next】 4…...

ML@sklearn@ML流程Part3@AutomaticParameterSearches

文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证&#x1f388;egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…...

Ubuntu22安装OpenJDK

目录 一、是否自带JDK 二、 删除旧JDK&#xff08;如果自带JDK满足需求就直接使用了&#xff09; 三、下载OpenJDK 四、新建/home/user/java/文件夹 五、 设置环境变量 六、查看完成 附&#xff1a;完整版连接&#xff1a; 一、是否自带JDK java -version 二、 删除旧…...

【数据库管理】②实例管理及数据库启动关闭

1. 实例和参数文件 1.1 instance 用于管理和访问 database. instance 在启动阶段读取初始化参数文件(init parameter files). 1.2 init parameter files [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ cd $ORACLE_HOME/dbs [oracl…...

【2023】Kubernetes之Pod与容器状态关系

目录简单创建一个podPod运行阶段&#xff1a;容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段&#xff1a; Pod创建后&am…...

LabVIEW阿尔泰PCIE 5654 例程与相关资料

LabVIEW阿尔泰PCIE 5654 例程与相关资料 阿尔泰PCIE 5654多功能采集卡&#xff0c;具有500/250Ksps、32/16路模拟量输入&#xff1b;100Ksps&#xff0c;16位&#xff0c;4/2/0路同步电压模拟量输出&#xff1b;8路DIO &#xff1b;8路PFI&#xff1b;1路32位多功能计数器。PC…...

spark2.4.4有哪些主要的bug

Issue Navigator - ASF JIRA -...

信息学奥赛一本通 1347:【例4-8】格子游戏

【题目链接】 ybt 1347&#xff1a;【例4-8】格子游戏 【题目考点】 1. 并查集&#xff1a;判断无向图是否有环 【解题思路】 该题为判断无向图是否有环。可以使用并查集来完成。 学习并查集时&#xff0c;每个元素都由一个整数来表示。而该问题中每个元素是一个坐标点&a…...

acwing3417. 砝码称重

acwing3417. 砝码称重算法 1: DFS算法2 : DP算法 1: DFS /*** 数据范围 对于 50%的评测用例&#xff0c;1≤N≤15. 对于所有评测用例&#xff0c;1≤N≤100&#xff0c;N 个砝码总重不超过 1e5. */ /* 算法 1: DFS 思路 : 对于每个砝码,有放在左边,放在右边,和不放三种选择,使…...

生成式 AI:百度“文心一言”对标 ChatGPT?什么技术趋势促使 ChatGPT 火爆全网?

文章目录前言一、生成式 AI 的发展和现状1.1、什么是生成式 AI&#xff1f;1.2、生成式 AI 的发展趋势1.3、AI 生成内容的业务场景和分类二、生成式 AI 从分析领域到创作领域2.1、 降低内容创作门槛&#xff0c;增加 UGC 用户群体2.2、提升创作及反馈效率&#xff0c;铺垫线上实…...

PCL 非线性最小二乘法拟合圆柱

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里通过非线性最小二乘的方法来实现圆柱体的拟合,具体的计算过程如下所述: 图中, p p p为输入数据的点位置,求解的参数为柱体的轴向向量 a...

融合多尺度特征与注意力机制的YOLOv5红外小目标检测优化方案

1. 红外小目标检测的技术挑战 红外遥感图像中的小目标检测一直是计算机视觉领域的难点问题。与可见光图像相比&#xff0c;红外图像具有低对比度、高噪声、目标尺寸小等特点&#xff0c;这使得传统检测算法难以取得理想效果。在实际应用中&#xff0c;军事侦察中的无人机识别、…...

3步解决macOS应用更新烦恼:开源神器Latest使用指南

3步解决macOS应用更新烦恼&#xff1a;开源神器Latest使用指南 【免费下载链接】Latest A small utility app for macOS that makes sure you know about all the latest updates to the apps you use. 项目地址: https://gitcode.com/gh_mirrors/la/Latest 你是否曾为m…...

AI人脸隐私卫士快速部署指南:3步启动WebUI界面,开箱即用

AI人脸隐私卫士快速部署指南&#xff1a;3步启动WebUI界面&#xff0c;开箱即用 1. 引言&#xff1a;你的隐私&#xff0c;需要一道智能防线 你有没有过这样的困扰&#xff1f;公司团建拍了张大合照&#xff0c;想发朋友圈分享喜悦&#xff0c;却担心照片里同事们的隐私&…...

告别UnsatisfiedLinkError!OpenCV Java版环境配置的终极避坑指南(含Maven/Gradle依赖)

告别UnsatisfiedLinkError&#xff01;OpenCV Java版环境配置的终极避坑指南&#xff08;含Maven/Gradle依赖&#xff09; 在计算机视觉领域&#xff0c;OpenCV无疑是开发者最常用的工具库之一。然而&#xff0c;当Java开发者满怀期待地引入OpenCV依赖后&#xff0c;却常常被U…...

用计算机科学与技术的视角,把谈恋爱流程化:构建可运行、可调试、可迭代的情感操作系统

用计算机科学与技术的视角&#xff0c;把谈恋爱流程化&#xff1a;构建可运行、可调试、可迭代的情感操作系统 善灵驿站 成长心理 技术思维深度融合系列 作者&#xff1a;培风图南以星河揽胜 专栏链接&#xff1a;善灵驿站 &#x1f4cc; 导读&#xff1a;为什么技术人更需要…...

像素时装锻造坊:零基础5分钟快速部署,开启你的AI像素时装设计之旅

像素时装锻造坊&#xff1a;零基础5分钟快速部署&#xff0c;开启你的AI像素时装设计之旅 1. 为什么选择像素时装锻造坊 想象一下&#xff0c;你正在设计一款复古风格的像素游戏&#xff0c;需要为角色制作各种皮革时装。传统方法要么需要专业的美术功底&#xff0c;要么得花…...

【esp32使用jtag下载和调试 Can‘t perform JTAG flash, because OpenOCD server is not running!】

ESP-IDF使用USB的JTAG下载调试时报错现象。 2026年初尝试了很多方法jtag下载&#xff0c;网上很多资料都有问题&#xff0c;以下实操烧录成功过程记录。 提示&#xff1a; Can’t perform JTAG flash, because OpenOCD server is not running! ❌ Error: libusb_open() faile…...

Polars 2.0大规模清洗性能翻倍的7个底层优化技巧:基于真实金融风控流水线压测数据

第一章&#xff1a;Polars 2.0大规模数据清洗性能跃迁的工程意义Polars 2.0 的发布标志着 Rust 原生 DataFrame 库在工程落地层面实现关键突破——其基于 Arrow 2.0 和全新查询优化器&#xff08;QOv2&#xff09;重构的执行引擎&#xff0c;将典型 ETL 清洗任务的吞吐量提升达…...

UniApp项目实战:手把手教你集成百度离线人脸SDK实现App实名认证(含完整代码)

UniApp实战&#xff1a;百度离线人脸SDK集成全流程与避坑指南 移动应用开发中&#xff0c;实名认证功能已成为金融、社交、电商等领域的标配需求。对于使用UniApp框架的开发者而言&#xff0c;如何高效集成百度离线人脸SDK实现安全可靠的认证流程&#xff0c;是提升产品竞争力的…...

不用pip也能装!3种方法在Pycharm中配置wxPython(含离线安装技巧)

突破网络限制&#xff1a;PyCharm中wxPython的3种高阶安装方案 在企业开发环境中&#xff0c;网络访问限制常常成为Python包管理的"拦路虎"。特别是像wxPython这样包含二进制扩展的GUI库&#xff0c;传统pip安装方式在离线环境下几乎束手无策。本文将揭秘三种无需依赖…...