当前位置: 首页 > 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…...

Python自动实时查询预约网站的剩余名额并在有余额时发邮件提示

本文介绍基于Python语言&#xff0c;自动、定时监测某体检预约网站中指定日期的体检余额&#xff0c;并在有体检余额时自动给自己发送邮件提醒的方法。 来到春招末期&#xff0c;很多单位进入了体检流程。其中&#xff0c;银行&#xff08;尤其是四大行&#xff09;喜欢“海检”…...

Flutter 验证码输入框

前言&#xff1a; 验证码输入框很常见&#xff1a;处理不好 bug也会比较多 想实现方法很多&#xff0c;这里列举一种完美方式&#xff0c;完美兼容 软键盘粘贴方式 效果如下&#xff1a; 之前使用 uniapp 的方式实现过一次 两种方式&#xff08;原理相同&#xff09;&#xff1…...

如何从0到设计一个CRM系统

什么是CRM 设计开始之前&#xff0c;先来了解一下什么是CRM。CRM&#xff08;Customer Relationship Management&#xff09;是指通过建立和维护与客户的良好关系&#xff0c;达到满足客户需求、提高客户满意度、增加业务收入的一种管理方法和策略。CRM涉及到跟踪和管理客户的所…...

Numba 的 CUDA 示例 (2/4):穿针引线

本教程为 Numba CUDA 示例 第 2 部分。 按照本系列从头开始使用 Python 学习 CUDA 编程 介绍 在本系列的第一部分中&#xff0c;我们讨论了如何使用 GPU 运行高度并行算法。高度并行任务是指任务完全相互独立的任务&#xff0c;例如对两个数组求和或应用任何元素函数。 在本教…...

项目的各个阶段如何编写标准的Git commit消息

标准提交消息格式 一个标准的提交消息应包括三部分&#xff1a;标题&#xff08;summary&#xff09;、正文&#xff08;description&#xff09;和脚注&#xff08;footer&#xff09;。 1. 标题&#xff08;Summary&#xff09; 简洁明了&#xff0c;不超过50个字符。使用…...

Python课设-学生信息管理系统

一、效果展示图 二、前端代码 1、HTML代码 <1>index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...

openssl 常用命令demo

RSA Private Key的结构&#xff08;ASN.1&#xff09; RSAPrivateKey :: SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- …...

【Linux】Linux基本指令2

目录 1.man指令&#xff08;重要&#xff09;&#xff1a; 2.echo指令 3.cp指令&#xff08;重要&#xff09;&#xff1a; 4.mv指令 5.cat指令/echo指令重定向 6.more指令 7.less指令&#xff08;重要&#xff09; 8.head指令 9.tail指令 我们接着上一篇&#xff1a;h…...

springboot+vue+mybatis博物馆售票系统+PPT+论文+讲解+售后

如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统博物馆售票系统信息管理难度大&#xff0c;容错率低&#xff0c;…...

java—MyBatis框架

简介 什么是 MyBatis&#xff1f; MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&…...