2023年第六届广西大学生程序设计竞赛(正式赛)题解

news2025/7/8 21:19:58

在这里插入图片描述

比赛题目链接,可以继续提交代码: 2023年第六届广西大学生程序设计竞赛(正式赛)
|
知乎:如何评价第六届广西大学生程序设计竞赛?

难度题号备注
签到题A J K已给出题解和代码
普通题B D E H已给出题解和代码
中等题C G
难题F I L M

没有渠道获取官方题解PPT,结合平台上的过题代码和chatgpt尝试讲解。
多有纰漏,恳请指正!!!

文章目录

  • 签到题
  • A Alpha, Beta, Omega
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • J June
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • K Keyboard
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • 普通题
  • B Brilliant Idea
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • D Dream Team
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • E Evil Capitalist
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • H Hide and Seek
    • 题目大意:
    • 解题思路:
    • 参考代码c++
  • 中等题
  • 难题

签到题

A Alpha, Beta, Omega

A Alpha, Beta, Omega

题目大意:

抽牌游戏。每次抽 k 张牌 ,抽到一张 α 就 放入一张新的 β , 抽到一张 β 就 放入一张新的 Ω ,抽到一张 Ω 代表游戏胜利。询问在运气最差的时候,至多抽多少次才会胜利。

解题思路:

运气最差,自然是 先抽完 α ,再抽完 β ,最后才抽到 Ω 。

其实不用特意处理 抽 α 抽完了 还要同时抽 β 的情况。

抽到一张 α 就 放入一张新的 β ,就说明 α 要被抽两次( α 和 新的β )。

就直接 (a*2+b)/k+1 就行。

参考代码c++

#include <iostream>
using namespace std;
int main()
{
    int a,b,o,k;
    cin>>a>>b>>o>>k;
    if(a+b<k) cout<<1;
    else cout<<((a*2+b)/k+1);
    return 0;
}

J June

J June

题目大意:

取两个字符串,按指定方式输出。

解题思路:

送分题。

参考代码c++

#include<iostream>
using namespace std;

int main(){
	string s,t;
	cin>>s>>t;
	cout<<"Good luck to "<<s<<" in "<<t<<" and have fun!";
}

K Keyboard

K Keyboard

题目大意:

不断将当前字符串进行复制并粘贴到其后面,询问是否有机会能够与另一个字符串相吻合

解题思路:

其实不用 特意判断 第一次复制粘贴的情况, 只要当前字符串长度小于另一个字符串长度就循环复制粘贴自身就行。

当然也可以提前判断下是否满足幂数倍,不判断其实也能过题。

参考代码c++

using namespace std;
string s,t;
 
int main()
{
    cin>>s>>t;
    while(s.size()<t.size())s+=s;
    if(s==t)cout<<"Smart People's Big Win!";
    else cout<<"Lazy Dog's Great Failure...";
    return 0;
}

普通题

B Brilliant Idea

B Brilliant Idea

题目大意:

这道题目让我们玩一个字符串的游戏,每次可以选择一个子串,把这个子串中的字符都变成该子串中的任意一个字符。游戏的目标是尽可能多地进行操作。猜猜在所有长度为 n 且只由小写字母构成的字符串中,有多少个字符串能够达到以下三种情况中的一种:

  • 通过变化不能达到任何两个字符相同的状态;
  • 通过有限次变化能够达到任何两个字符不同的状态;
  • 无论进行多少次变化,都无法达到任何两个字符不同的状态。

解题思路:

n=2 时是一种特例,单独输出即可。
n>2 时

  • 第一问需要我们计算出长度为 n 的字符串中有多少个没有相邻相同字母的字符串。其实只有 aa , bb … zz ,这些情况满足,即 26 种。
  • 第二问需要我们判断给定的字符串能否经过有限次操作后变成只包含一个字母。其实推导以下发现并不能满足,要么属于第一种情况,要么属于第三种情况,即 0 种。
  • 三问需要我们判断给定的字符串是否可以无限次进行操作。如果该字符串的长度为偶数,那么直接构造一类字符串即可。

参考代码c++

#include <iostream>
using namespace std;
long long a,b,c=26ll,sum=1,mod=1e9+7;
int main()
{
	cin>>a;
	if(a==2) cout<<"26 650 0";
	else{
		b=a%mod;
		while(b>0){
			if(b&1) sum=(sum*c)%mod;
			c=(c*c)%mod;
			b>>=1;
		}
		cout<<"26 0 "<<(sum-26+mod)%mod;
	}
	return 0;
}

D Dream Team

D Dream Team

题目大意:

将 3n 个人分成 n 个团队,每个团队有三个人,并且要最小化所有人的焦虑值之和。对于一个人,他的焦虑值等于他所在团队中他不认识的人的数量。

解题思路:

本题可以使用并查集相似的思路进行求解。

对于一个团队中的学生而言,它们都是互相熟悉的,如果我们把其中的一个学生看做代表,那么这个代表所在的连通块就是这个团队能够扩展到的全部学生。因此,我们可以考虑将同一个连通块内的所有学生分到同一个组中,这样不会增加任何一个学生的焦虑值。

对于一个学生 u 而言,我们可以使用并查集等方法求出它所在的连通块 c_u ,然后对于每个团队 t,我们判断 t 中是否存在一个学生 v 所在的连通块 c_v 与 c_u 相同。如果存在这样的 v,那么 t 中的所有学生都能够被分配到和 u 相同的组中,此时团队 t 的焦虑值为 0;否则 t 中的每个学生都需要被分配到和 u 不同的组中,其焦虑值为团队成员之间不熟悉的人数。

综上所述,我们可以遍历每个学生 u,对于每个团队 t 判断它们是否能被分到同一个组内。然后将所有团队的焦虑值加起来,这就是答案。

参考代码c++

#include <iostream>
using namespace std;
int n,m,x,y,a,b,f[3000006],num[3000006];
int fnd(int a){
    return f[a]==a?a:f[a]=fnd(f[a]);
}
int main()
{
	cin>>n>>m;
    n*=3;
	for(int i=1;i<=n;i++) f[i]=i; 
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		int fx=fnd(x),fy=fnd(y);
		if(fx!=fy) f[fx]=fy;
	}
	for(int i=1;i<=n;i++) num[fnd(i)]++;
	for(int i=1;i<=n;i++){
		if(f[i]==i){
			if(num[i]%3==2) a++;
			else if(num[i]%3==1) b++;
		}
	}
	if(a>=b) cout<<b*4+(a-b)/3*8;
	else cout<<(a+b)*2;
	return 0; 
} 

E Evil Capitalist

E Evil Capitalist

题目大意:

有一个公司雇佣了 n 个员工,每个员工的工资为 a_i 元。如果一个员工的工资比他下面的员工的工资高,那么这个员工就会感到不满意。为了防止员工罢工,公司可以选择进行若干次两人谈话,让他们互相知道彼此的工资,并且对不满意的员工进行适当的工资调整,使得最后只有一个员工感到不满意,其他员工都感到满意。问公司最少需要支付多少元才能实现该目标。

解题思路:

这道题目是一个经典的贪心算法问题。我们可以先将所有员工按照工资从高到低排序,并将所有人都初始化为不满意状态。接下来,我们遍历每个员工,如果该员工还没有被处理过,那么我们就找到他下面第一个比他工资低的员工,然后进行以下操作:

如果两个员工工资相同,那么他们都变成满意状态。
如果下方员工比当前员工工资低,那么下方员工变成满意状态,当前员工工资上涨到下方员工的工资。然后继续向下查找,直到没有比当前员工工资低的员工。
这样处理完所有员工之后,就可以得到最终需要支付的总金额了。时间复杂度为 O(nlogn),其中 n 为员工数量,主要消耗在排序操作上。

参考代码c++

#include <bits/stdc++.h>
using namespace std;
long long n,sum,mx,cnt,now,a[200007];
int main() {
    cin >> n;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    a[n]=2e9+7;
    for(int i=1;i<=n;i++){
        if(a[i]==a[i-1]) cnt++;
        else{
            now=cnt%2?0:a[i]-a[i-1];
            sum+=now;
            mx=max(mx,now);
            cnt = 0;
        }
    }
    cout<<sum-mx;
    return 0;
}

H Hide and Seek

H Hide and Seek

题目大意:

这道题目的题意是,给定一个正整数 x (1≤x≤a),以及 m 个约束条件,每个约束条件形如 b_j mod x =c_j 。求在满足所有约束条件的前提下,[1,a] 中有多少个正整数同时满足所有条件。保证存在至少一个满足条件的正整数。

解题思路:

使用循环读入每个约束条件,计算出 b_j −c_j 的最大公约数 gcd,并计算出满足所有约束条件的最小正整数 l。

从 1 到 gc 的平方根,枚举 gcd 的每个因子 i。如果 i 满足要求,则令 ans 自增 1;如果 gcd/i 也满足要求且 gcd/i 不等于 i,则同样令 ans 自增 1。最后输出 ans,即为满足约束条件的正整数的数量。

gcd=0 时应当直接输出 a−l+1。

参考代码c++

#include<bits/stdc++.h>
using namespace std;
long long m,a,b,c,gc,l=1,ans=0;
int main(){
    cin>>m>>a;
    while(m--){
        cin>>b>>c;
        gc=__gcd(b-c,gc);
        l=max(l,c+1);
    }
    for(int i=1;i<=gc/i;i++){
        if(gc%i==0){
        	if(i<=a&&i>=l)ans++;
            if(gc/i!=i&&gc/i<=a&&gc/i>=l)ans++;
        }
    }
    if(gc==0) cout<<a-l+1;
    else cout<<ans;
}

中等题

还没有研究到hhhh


难题

超出我所能想象的程度了hhhh,希望有大佬可以补上


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习方法在生态经济学领域中的应用

查看原文>>>基于R语言机器学习方法在生态经济学领域中的实践技术 近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c…

moviepy快速切分视频并保存片段

文章目录 1、直接使用ffmepg2、使用moviepy本身 moviepy安装最新版本&#xff1a; pip install moviepy --pre --upgrade版本是v2.0.0.dev2。 有两种方法一种快速的&#xff1a; 1、直接使用ffmepg from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip ffmpeg…

Lecture 12 Discourse

目录 Discourse 语篇三个关键的语篇任务Discourse Segmentation 语篇分段Unsupervised Approaches 无监督方法Supervised Approaches 有监督方法有监督语篇分段器Discourse Analysis 语篇解析语篇解析RST: Discourse UnitsRST: Discourse RelationsNucleus vs. Satellite 核心 …

2022计算机系统期末

直接导入无图片&#xff0c;先不改了&#xff0c;不过图片都是原题目&#xff0c;不影响对答案。 计算机系统2022期末 本课程的复习请以知识点复习为重&#xff0c;全部内容共有大小280个知识点&#xff0c;都可能在期末考试出现&#xff0c;仅通过往年试卷复习是远远不够的&…

从小白到大神之路之学习运维第35天---第三阶段---mysql数据库之主从复制配置

第三阶段基础 时 间&#xff1a;2023年6月7日 参加人&#xff1a;全班人员 内 容&#xff1a; Mysql数据库之主从复制配置 目录 前提环境配置 MySQL 5.7 版本的主从复制配置步骤 主 库 1. 在主库上开启二进制日志记录功能 2. 在主库上创建一个用于从库访问的备份用户 3. 在主…

VTK学习之光照和相机

目录 一、VTK光照 1、关于vtkLight常用的方法 2、最终效果 二、相机设置 1、相机设置 2、效果 一、VTK光照 通过设置光照&#xff0c;可以达到不同颜色的目的&#xff0c;参考博客&#xff1a; VTK修炼之道7_三维场景基本要素:光照_vtk 光照_沈子恒的博客-CSDN博客 1…

吴恩达 ChatGPT Prompt Engineering for Developers 系列课程笔记--02 Guidelines

02 Guidelines 本节将配合代码&#xff0c;介绍一些构建Prompt的基本原则和策略。 1) OpenAI API 首先开发者需要在OpenAI网站(https://platform.openai.com/account/api-keys)注册一个key&#xff0c;然后通过pip install openai安装openai三方库&#xff0c;再将key导入当…

Express路由

一、目标 能够使用express.static()快速托管静态资源能够使用express路由精简项目结构能够使用常见的express中间件能够使用express创建API接口能够在express中启用cors跨域资源共享 二、目录 初始ExpressExpress路由Express中间件使用Express写接口 1.1Express简介 1.什么…

微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍

本章实现导航栏及tabbar的自定义处理的相关方法介绍及效果展示。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/37977    2. 5…

uCOSii系统的中断管理

uCOSii系统的中断管理 1、在使用uCOSii系统时&#xff0c;中断服务程序需要调用两个函数OSIntEnter()和OSIntExit()。 OSIntEnter() 进入中断时&#xff0c;用OSIntNesting来统计中断嵌套次数&#xff0c;告知uCOSii系统&#xff0c;当前中断服务程序正在执行&#xff1b; OS…

Java实战和面试宝典

这是一篇记录工作和学习过程中遇到的一些问题的文章&#xff0c;每个问题都很有代表性&#xff0c;值得不断回顾和深入思考的&#xff0c;答案未必十分准确&#xff0c;但可以作为一种参考&#xff0c;共勉&#xff01; 读了这篇不一样的八股文&#xff0c;你将至少拥有三年经…

社交媒体品牌:如何通过11个步骤提升您的战略

您是否正在努力在社交媒体上留下自己的印记&#xff1f;您是否觉得您的品牌在无尽的视频和表情包中迷失了方向&#xff1f;在本文中&#xff0c;我们将为您提供11个技巧&#xff0c;帮助您制定社交媒体品牌战略并脱颖而出。但首先&#xff0c;让我们探讨什么是社交媒体品牌&…

正版软件 | DaisyDisk:Mac 电脑一流的磁盘空间管理工具

使用 Mac 工作时&#xff0c;平时创建并下载大量文件&#xff0c;但很容易忘记或者很少删除这些内容。但是有一天&#xff0c;您发现启动磁盘已红&#xff0c;但是自己又好似没有安装啥软件&#xff0c;这时候就会想到底是哪些数据占用了这么大的空间&#xff1f;&#xff01; …

【TA 100】2.3 HLSL常用函数介绍

一、基本数学运算 ● max&#xff08;a&#xff0c;b&#xff09; ○ 返回较大的 ● min&#xff08;a&#xff0c;b&#xff09; ○ 返回较小的 ● mul&#xff08;a&#xff0c;b&#xff09; ○ 两向量相乘&#xff0c;常用于矩阵运算 ● abs&#xff08;a&#xff09; ○ …

ThreeJS教程:地图案例(包围盒、正投影)

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 地图案例(包围盒、正投影) 地图案例(包围盒、正投影) 地图案例会涉及到几何体、包围盒、正投影相机三方面知识点。 平面填充几何体ShapeGeometry包围盒Box3正投影相机Orthograph…

MTK开发板-4G/5G联发科开发板相关方案定制

开发板是用于嵌入式系统开发的电路板&#xff0c;包括中央处理器、存储器、输入设备、输出设备、数据通路 / 总线和外部资源接口等一系列硬件组件。一般来说&#xff0c;开发板由嵌入式系统开发者根据开发需求自主定制&#xff0c;也可以由用户自己研究设计。开发板不仅是初学者…

进阶篇丨链路追踪(Tracing)很简单:链路成本指南

广义上的链路成本&#xff0c;既包含使用链路追踪产生的数据生成、采集、计算、存储、查询等额外资源开销&#xff0c;也包含链路系统接入、变更、维护、协作等人力运维成本。为了便于理解&#xff0c;本小节将聚焦在狭义上的链路追踪机器资源成本&#xff0c;人力成本将在下一…

十二、光照基础

第一部分概念 OpenGL ES的基础光照模型&#xff0c;目前opengl还无法模拟现实世界的复杂光照效果&#xff0c;但是为了效果上的逼真&#xff0c;还是引入了一些简单的模型来模拟光照效果&#xff0c; 这里介绍冯氏光照模型(Phong Lighting Model)模型&#xff0c;他是由三种元…

大数据:spark RDD编程,构建,RDD算子,map,flatmap,reduceByKey,mapValues,groupBy,

大数据&#xff1a;spark RDD编程 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其s…

618有什么数码好物值得购买?2023值得入手的数码好物推荐

在618期间&#xff0c;有哪些值得入手的数码好物&#xff1f;很多人还不知道有哪些数码好物值得买的&#xff0c;本文推荐几款质量不错数码好物&#xff0c;助您尽情享受618购物买买买。 一、南卡OE不入耳蓝牙耳机 推荐理由&#xff1a; 南卡OE耳机是一款性价比超高的不入耳蓝…