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

2024年西安交通大学程序设计竞赛校赛

2024年西安交通大学程序设计竞赛校赛

文章目录

  • 2024年西安交通大学程序设计竞赛校赛
    • D瑟莉姆的宴会
    • E: 雪中楼
    • I: 命令行(待补)
    • J:最后一块石头的重量(待补)
    • K: 崩坏:星穹铁道(待补)
    • M:生命游戏
    • N: 圣诞树

D瑟莉姆的宴会

解题思路:

​ 该题是一道思维题。

  1. 仔细想想,只要满足非负就行了,那么如果一个点没有人支配他,那让他为根节点,其他都受他的支配这样的话
  2. 如果后面的所有节点都存在的时候,那么就取前面最多的那个节点。

​ 起始该题可以不用考虑1这个状态,直接用 2 这个状态也能过。

​ 官方题解方法:

​ 该题的官方题解是构造: 1 − > 2 − > 3 − > ⋅ ⋅ ⋅ − > n 1 -> 2 -> 3 -> ··· -> n 1>2>3>⋅⋅⋅>n 的树,然后判断这个方式是不是为负的,如果为负的就翻转为: n − > ( n − 1 ) − > ( n − 2 ) − > ⋅ ⋅ ⋅ − > 1 n -> (n-1) -> (n-2) -> ··· -> 1 n>(n1)>(n2)>⋅⋅⋅>1

解题代码:

void solve() {int n,m;cin >> n >> m;int maxx =0;for(int i = 1; i<= m; i++){cin >> arr[i].fi >> arr[i].se;user[arr[i].se] = 1;user1[arr[i].fi] ++;maxx = max(maxx, user1[arr[i].fi]);}for(int i = 1; i <= n; i++)if(user[i] == 0) {for(int j = 1; j <= n; j++){if(j == i) cout << 0 << " ";else cout << i << " ";}return ;}for(int i = 1; i <= n; i ++)if(maxx == user1[i]){for(int j = 1; j <= n; j++){if(j == i) cout << 0 << " ";else cout << i << " ";}return ;}
}

E: 雪中楼

解题思路:

​ 该题是运用链表的思路:

  1. 当发现 0 的时候,就直接输出,因为前面没有比他更小的数了。
  2. 如果发现非0的数,那么肯定是比指定的那个数大,那么就接在指定那个数的下面。
  3. 如果当前遍历到的那个数下面接的有数的话,就直接输出。因为前面没有比它更大的数了。

解题代码:

const int N = 1e6+5;
int arr[N];
void solve() {int n,m;cin >> n;for(int i = 1; i<= n; i++)cin >> arr[i];vector<vector<int> > a(n + 1);for(int i = n; i>= 1; i--){if(arr[i] == 0){cout << i << " ";for(int j = 0; j < a[i].size(); j++){cout << a[i][j] << " ";}a[i].clear();}else{a[arr[i]].push_back(i);for(int j = 0; j < a[i].size(); j++){a[arr[i]].push_back(a[i][j]);}a[i].clear();}}
}

I: 命令行(待补)

解题思路:

解题代码:

J:最后一块石头的重量(待补)

解题思路:

解题代码:

K: 崩坏:星穹铁道(待补)

解题思路:

解题代码:


M:生命游戏

解题思路:

​ 该题是一道模拟题,但模拟起来有一些问题需要解决。_cgi-bin_mmwebwx-bin_webwxgetmsgimg__&MsgID=3291596598234462527&skey=@crypt_f94f2d13_d4d93e9d0c4c227384cec13b905af67e&mmweb_appid=wx_webfilehelper

​ 就比如这种情况,如果边删除边存个数等于k的点,那么就会把中间那个节点也给存进去,但当将当前所有的k节点都删除的时候,就不会删除中间那个节点。

​ 解决这个问题的办法就是用一个set来存删除后节点为k的点,如果中间为k,但操作之后就不为k的时候,就直接将k从set中删除。

​ 所谓的这里面所谓的删边也不是真正意义的删除那个边,而是将那个边标记一下,如果遍历到已经标记的点就不进行向下dfs了。

解题代码:

const int N = 1e6+5;
int user[N];
vector<int> g[N];
int n,k;
vector<int> vis(N);void dfs(int x){vis[x] = 1;for(auto i : g[x]){if(!vis[i]) dfs(i);}
}void solve() {cin >> n >> k;for(int i = 1; i < n; i++){int a,b;cin >> a >> b;g[a].push_back(b);g[b].push_back(a);}queue<int> que;for(int i = 1; i <= n; i++){user[i] = g[i].size();if(g[i].size() == k){que.push(i);user[i] = -1;}}while(que.size()){set<int> st;while(que.size()){int a = que.front();que.pop();vis[a] = 1;for(auto i : g[a]){if(user[i] == -1) continue;user[i] --;if(user[i] == k){st.insert(i);}else {if(st.count(i)) st.erase(i);}}}for(auto i : st){que.push(i);user[i] = -1;}}int res= 0;for(int i = 1; i <= n; i++){if(!vis[i]){dfs(i);res ++;}}cout << res << endl;
}

N: 圣诞树

解题思路:

​ 该题和我之前写过的一道题很像,

​ 该题主要是树的遍历,当这棵树满足条件的话,那就把这个子树删除,说是删除,其实就是一遍扫描,这个树下的颜色种类全清除罢了。

​ 这题主要思路就是:

  1. 先将树的结构存下来,然后进行后序遍历,遍历的过程中进行统计当前节点的颜色,因为要存颜色的种类,所以用set就行。
  2. 但这样直接写的话就会导致时间超时,那就需要优化一下,用启发式合并,就可以将时间降下来。

启发式合并:

​ 将少的那一部分加到多的那一部分上。

​ 但要注意的是,直接写会导致内存超限,那么也不能直接等于,那就用swap进行交换,这样就可以将内存降下来。

解题代码:

const int N = 1e6+5;
int arr[N];
vector<int> g[N];
int res = 0;
int n,k;set<int> dfs(int x,int father){set<int> st;st.insert(arr[x]);for(auto i : g[x]){if(i == father) continue;set<int> temp = dfs(i,x);if(temp.size() > st.size()){swap(temp,st);  // 启发式合并 }for(auto i : temp) st.insert(i);}if(st.size() >= k){res ++; st.clear();}return st;
}void solve() {cin >> n >> k;for(int i = 1; i <= n;i++){cin >> arr[i];}for(int i = 1; i < n; i++){int a,b;cin >> a >> b;g[a].push_back(b);g[b].push_back(a);}set<int> st = dfs(1,1);if(st.size() >= k) res++;cout << res << endl;
}

相关文章:

2024年西安交通大学程序设计竞赛校赛

2024年西安交通大学程序设计竞赛校赛 文章目录 2024年西安交通大学程序设计竞赛校赛D瑟莉姆的宴会E: 雪中楼I: 命令行(待补)J&#xff1a;最后一块石头的重量(待补)K: 崩坏&#xff1a;星穹铁道(待补)M&#xff1a;生命游戏N: 圣诞树 D瑟莉姆的宴会 解题思路&#xff1a; ​ …...

【学习Day5】操作系统

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 学习编辑文章的时间不太够用&#xff0c;先放思维导图&#xff0c;后续复习完善细节。...

学习小记录——python函数的定义和调用

今日小好运&#xff0c;未来有好运。&#x1f381;&#x1f496;&#x1fad4; 分享个人学习的小小心意&#xff0c;一起来看看吧 函数的定义 函数通常来说就是带名字的代码块&#xff0c;用于完成具体的工作&#xff0c;需要使用的时候调用即可&#xff0c;这不仅提高代码的…...

RHEL7.9修改分区

系统RHEL7.9 他因为安装软件&#xff0c;需要修改分区 进入超级用户root&#xff0c;输入lsblk 查看分区&#xff0c;可见465.8G系统盘sda下有三个物理卷&#xff0c;其中sda3下/home有410.6G&#xff0c;需要这部分拆分出200G软件和100G的数据库分区 备份/home 目录下文件 c…...

【Linux】命名管道

一、命名管道的原理 在前面的博客中&#xff0c;我们学习了匿名管道&#xff0c;了解到了两个具有血缘关系的进程之间是如何进行通信的&#xff1f;那么在没有血缘关系&#xff08;毫不相关&#xff09;的进程之间是如何进行通信的&#xff1f; 大致思路是一样的&#xff0c;我…...

IMX6Q基于linux4.1.15调试音频芯片tas2505

IMX6Q基于linux4.1.15调试音频芯片tas2505 1、开发环境2、初步想法3、开发过程4、tas2505重要的寄存器5、遇到的问题1、开发环境 芯片:IMX6Q (NXP系列) 内核版本:linux4.1.15 Ubuntu版本:16.04 目标模块:tas2505 2、初步想法 由于该电路是由外部晶振提供的时钟频率24.5…...

卷积常用网络

目录 1.AlexNet2.VGG3.GoogleNet4.ResNet5.MobileNet 1.AlexNet AlexNet是2012年ISLVRC 2012&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;竞赛的冠军网络。 首次利用 GPU 进行网络加速训练。使用了 ReLU 激活函数&#xff0c;而不是传统的 Si…...

Firebase Local Emulator Suite详解

文章目录 Firebase Local Emulator Suite 组件安装和使用步骤1. 安装 Firebase CLI2. 初始化 Firebase 项目3. 配置模拟器4. 启动模拟器5. 配置应用程序使用本地模拟器 常见用途 Firebase Local Emulator Suite 是一组本地服务&#xff0c;可以模拟 Firebase 平台的在线服务&am…...

计算机组成原理·存储系统疑点归纳

组原这门课有点学得不是很懂&#xff0c;现在快考试了&#xff0c;挑几个做错了的题分析、记录一下。 N o . 1 \mathit{No}.1 No.1  x x x、 y y y 为定点整数&#xff0c;其格式为 1 1 1 位符号位、 n n n 位数值位&#xff0c;若采用补码一位乘法实现乘法运算&#xff0c;则…...

在 GPU 上实现全规模文件系统加速

摘要 现代高性能计算和人工智能计算解决方案经常使用 GPU 作为其主要计算能力来源。这就为 GPU 应用程序的存储操作造成了严重的不平衡&#xff0c;因为每一个此类存储操作都必须向 CPU 发出信号并由 CPU 处理。在 GPU4FS 中&#xff0c;我们针对这种不平衡提出了一个彻底的解决…...

代码随想录算法训练营Day7|454.四数相加II、 383. 赎金信、15. 三数之和、 18. 四数之和

454.四数相加II 四个数组分成两组进行for循环&#xff0c;先用HashMap存储所有第一组for循环出现的和的次数。再进行第二组for循环&#xff0c;每一次得出的和判断其负数是否在map的key中&#xff0c;如果存在&#xff0c;就加上这个value。 class Solution {public int four…...

编译器屏障概述

文章目录 1. 前言2. 编译器内存屏障2.1 编译器内存访问重排序规则2.2 编译器屏障的几种形式2.2.1 显式编译器屏障2.2.2 隐式编译器屏障2.2.3 硬件内存屏障充当编译屏障2.2.4 编程语言内存模型提供的编译屏障 2.3 编译器内存屏障实例2.3.1 Linux spinlock 3. 结语4. 参考资料 1.…...

RUST宏编程入门

宏指示符 在Rust的宏编程中&#xff0c;宏可以接受多种类型的参数&#xff0c;称为“指示符”。这些指示符帮助宏识别不同类型的代码片段&#xff0c;并相应地处理它们。 这里列出全部指示符&#xff1a; blockexpr 用于表达式ident 用于变量名或函数名itemliteral 用于字面常…...

linux安装srs

获取srs cd /opt git clone -b 4.0release https://gitee.com/ossrs/srs.git cd srs/trunk 启动srs ./objs/srs -c conf/srs.conf ./etc/init.d/srs status 访问http://192.168.220.146:8080/出现下方图片说明安装成功 点击进入SRS控制台看到下方图片...

IO流(2)

缓冲流 字节缓冲流 利用字节缓冲区拷贝文件&#xff0c;一次读取一个字节&#xff1a; public class test {public static void main(String [] args) throws IOException {//利用字节缓冲区来拷贝文件BufferedInputStream bisnew BufferedInputStream(new FileInputStream(&…...

【docker】docker启动bitnami/mysql

说明&#xff1a;-v 宿主机目录:docker容器目录&#xff0c;-p 同理 注意&#xff1a;/opt/bitnami/mysql/conf/bitnami 目录自定义conf的目录&#xff0c;不能使用原有的/opt/bitnami/mysql/conf 目录。 容器启动后可在宿主机的/宿主/mysql8.0/conf&#xff0c;添加my_custom.…...

边缘计算、云计算、雾计算在物联网中的作用

边缘计算和雾计算不像云那样广为人知&#xff0c;但可以为企业和物联网公司提供很多帮助。这些网络解决了物联网云计算服务无法解决的许多问题&#xff0c;并使分散的数据存储适应特定的需求。让我们分别研究一下边缘计算、雾计算和云计算的优势。 雾计算的好处 低延迟。雾网络…...

【c语言】探索内存函数

探索内存函数 memcpy函数memmove函数memset函数memcmp函数&#xff1a; memcpy函数 memcpy函数声明&#xff1a; void * memcpy ( void * destination, const void * source, size_t num );将source空间下的num个字符复制到dest中去 函数的使用&#xff1a; 将字符数组a的5字…...

day46 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 01背包内嵌的循环是从…...

【linux】运维-基础知识-认知hahoop周边

1. HDFS HDFS&#xff08;Hadoop Distributed File System&#xff09;–Hadoop分布式文件存储系统 源自于Google的GFS论文&#xff0c;HDFS是GFS的克隆版 HDFS是Hadoop中数据存储和管理的基础 他是一个高容错的系统&#xff0c;能够自动解决硬件故障&#xff0c;eg&#xff1a…...

JeecgBoot低代码开发平台终极实战指南:从零开始构建企业级应用

JeecgBoot低代码开发平台终极实战指南&#xff1a;从零开始构建企业级应用 【免费下载链接】jeecg-boot jeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架&#xff0c;用于快速开发企业级应用。适合在 Java 应用开发中使用&#xff0c;提高开发效率和代码质量。特点是…...

如何快速上手uesave-rs:虚幻引擎存档编辑的终极指南

如何快速上手uesave-rs&#xff1a;虚幻引擎存档编辑的终极指南 【免费下载链接】uesave 项目地址: https://gitcode.com/gh_mirrors/ue/uesave 还在为无法修改心爱游戏的存档而烦恼吗&#xff1f;想要自定义游戏体验却不知从何下手&#xff1f;uesave-rs这款强大的Rus…...

效率倍增:用快马生成jdk一键配置脚本与docker环境模板

效率倍增&#xff1a;用快马生成JDK一键配置脚本与Docker环境模板 每次新换电脑或者重装系统&#xff0c;最头疼的就是重新配置开发环境。特别是Java开发&#xff0c;光是下载JDK、配置环境变量就得折腾半天。最近发现用InsCode(快马)平台可以快速生成自动化脚本&#xff0c;把…...

3步打造极速安全系统:AtlasOS开源优化方案全解析

3步打造极速安全系统&#xff1a;AtlasOS开源优化方案全解析 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...

Wan2.2-I2V-A14B极限测试:高分辨率与长视频生成的稳定性挑战

Wan2.2-I2V-A14B极限测试&#xff1a;高分辨率与长视频生成的稳定性挑战 1. 开场白&#xff1a;当AI视频生成遇上极限挑战 最近在测试Wan2.2-I2V-A14B模型时&#xff0c;我突发奇想&#xff1a;这个在常规场景下表现优秀的视频生成模型&#xff0c;如果被推到极限会怎样&…...

跨平台网络资源嗅探下载工具:一站式解决多媒体内容获取难题

跨平台网络资源嗅探下载工具&#xff1a;一站式解决多媒体内容获取难题 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcod…...

OpenRocket:开源火箭仿真平台的技术架构与实践指南

OpenRocket&#xff1a;开源火箭仿真平台的技术架构与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位&#xff1a;如何突破传统火箭设计…...

GitHub Desktop汉化终极指南:如何让英文界面瞬间变成中文

GitHub Desktop汉化终极指南&#xff1a;如何让英文界面瞬间变成中文 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desktop的英文界面而头疼吗&#xf…...

3步搞定黑苹果配置:OpCore-Simplify让EFI构建效率提升80%的智能方案

3步搞定黑苹果配置&#xff1a;OpCore-Simplify让EFI构建效率提升80%的智能方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否经历过这些痛苦…...

三菱电机MR-J5伺服系统实战:如何用CC-Link IE TSN搭建高效生产线(附配置清单)

三菱电机MR-J5伺服系统实战&#xff1a;CC-Link IE TSN智能产线部署指南 在工业4.0的浪潮中&#xff0c;生产线的智能化升级已成为制造业提升竞争力的关键。作为这一变革的核心驱动技术&#xff0c;三菱电机MR-J5系列伺服系统凭借其支持CC-Link IE TSN网络的独特优势&#xff0…...