2025山东CCPC题解

article/2025/6/22 21:21:52

文章目录

  • L - Stella
  • D - Distributed System
  • I - Square Puzzle
  • E - Greatest Common Divisor
  • G - Assembly Line

L - Stella

题目来源:L - Stella
在这里插入图片描述

解题思路
签到题,因为给出的字母不是按顺序,可以存起来赋其值,然后在比较。

代码实现

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e5+5;
void solve()
{map<char,int>mp;mp['O']=1;mp['B']=2;mp['A']=3;mp['F']=4;mp['G']=5;mp['K']=6;mp['M']=7;string s1,s2;cin>>s1>>s2;if(mp[s1[0]]<mp[s2[0]]){cout<<"hotter"<<endl;return ;}else if(mp[s1[0]]>mp[s2[0]]){cout<<"cooler"<<endl;return ;}else{if(s1[1]<s2[1]){cout<<"hotter"<<endl;return ;}else if(s1[1]>s2[1]){cout<<"cooler"<<endl;return ;}else{cout<<"same"<<endl;return ;}}
}
signed main()
{IOS;int _=1;cin>>_;while(_--)solve(); return 0;
} 

D - Distributed System

题目来源:D - Distributed System
在这里插入图片描述

解题思路
这道题主要考察个差分的算法,如果不考虑mod n的情况就把数组第i项和第i+n项最后加起来,题目意思是第0到ai-1项每次都会增加1,当然不能遍历着去加,所以就用一个前缀和数组记录改变的情况,最后利用前缀和公式求出即可。
代码实现

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e6+5;
int n,q,ans[N],b[N],k,x,y;
void solve()
{cin>>n>>q;vector<int>a(2*n+10,0);int sum=0;while(q--){cin>>x>>y;sum+=x/n;x%=n;a[y]++;a[y+x]--;}ans[0]=a[0];for(int i=1;i<n*2;i++)ans[i]=ans[i-1]+a[i];for(int i=0;i<n;i++)cout<<ans[i]+ans[i+n]+sum<<" ";cout<<endl;
}
signed main()
{IOS;int _=1;cin>>_;while(_--)solve(); return 0;
} 

I - Square Puzzle

题目来源:I - Square Puzzle
在这里插入图片描述
在这里插入图片描述

解题思路
这题没有什么规律,读完题后可以知道,一共就7种操作:右移第一行,右移第二行,右移第三行,下移第一列,下移第二列,下移第三列,顺时针旋转90度。因为只是三乘三的九宫格,将所有方式遍历一遍也一定不会超时,所以可以用广搜遍历每一种情况,然后将没种情况是否符合,如果符合看需要多少步,最终取最小,如果没有符合输出-1.

代码实现

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e6+5;
map<string,int>ans;
queue<string>q;
string youyi(string a,int op)//右移函数 
{if(op==1){char t=a[0];a[0]=a[2],a[2]=a[1],a[1]=t;return a;}if(op==2){char t=a[3];a[3]=a[5],a[5]=a[4],a[4]=t;return a;}if(op==3){char t=a[6];a[6]=a[8],a[8]=a[7],a[7]=t;return a;}
}
string xiayi(string a,int op)//下移函数 
{if(op==1){char t=a[0];a[0]=a[6],a[6]=a[3],a[3]=t;return a;} if(op==2){char t=a[1];a[1]=a[7],a[7]=a[4],a[4]=t;return a;}if(op==3){char t=a[2];a[2]=a[8],a[8]=a[5],a[5]=t;return a;}
} 
string xuanzhuan(string a)//顺时针旋转函数 
{char t=a[0];a[0]=a[6],a[6]=a[8],a[8]=a[2],a[2]=t;t=a[1];a[1]=a[3],a[3]=a[7],a[7]=a[5],a[5]=t;return a;
}
void bfs()
{q.push("123456789");ans["123456789"]=0;while(q.size()){string g=q.front();q.pop();string t;t=youyi(g,1);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1;t=youyi(g,2);if(ans[t]==0 )q.push(t),ans[t]=ans[g]+1;t=youyi(g,3);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1;t=xiayi(g,1);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1;t=xiayi(g,2);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1;t=xiayi(g,3);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1;t=xuanzhuan(g);if(ans[t]==0) q.push(t),ans[t]=ans[g]+1; }
}
void solve()
{string s;map<char,char>mp;for(int i=1;i<=9;i++){char ch;cin>>ch;mp[ch]='0'+i;}for(int i=1;i<=9;i++){char ch;cin>>ch;s+=mp[ch];}if(s=="123456789")cout<<"0"<<endl;else if(ans[s]==0)cout<<-1<<endl;else cout<<ans[s]<<endl;
}
signed main()
{IOS;bfs(); int _=1;cin>>_;while(_--)solve(); return 0;
} 

E - Greatest Common Divisor

题目来源:E - Greatest Common Divisor
在这里插入图片描述

解题思路
首先,答案一定是s=
∑ai+k的因数。因此对s因数分解,然后在因数中枚举答案x。
为了让答案为x,需要把每个ai增加到最近的x的倍数,剩下的操作次数还需要被x整除。如果x≤maxai,那么每x种数都要增加到同一个数,可以
一起计算。这种情况的复杂度为调和级数O(maxai logmaxai)。
如果x>maxai,那么所有数都增加到同一个数,直接O(1)计算。
整体复杂度O(n+√s+f(s)+maxai logmaxai),其中
f(s)≈6×103是因数个数。
代码实现
在这里插入图片描述
在这里插入图片描述

G - Assembly Line

题目来源:G - Assembly Line
在这里插入图片描述
在这里插入图片描述

解题思路
题目意思是k名工人加工n个工件,第i个工件在第ti分钟加入工人wi的收件箱,每分钟工人在自己的收件箱拿出一个工件,完成加工后放入下
一个工人的收件箱(如果是最后一个工人则加工完成)。问
所有工件加工完成需要几分钟
工件i原本的结束时间是(ti+k−wi),但每个时间点只能完成一个工件。
因此设ai表示从小到大排序后的工件完成时间,依次进行
更新ai←max(ai,ai−1+1)即可。复杂度O(nlogn)。
代码实现

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e6+5;
int n,k,w,t,a[N];void solve()
{cin>>n>>k;for(int i=1;i<=n;i++){cin>>w>>t;a[i]=k-w+t;}sort(a+1,a+1+n);for(int i=1;i<=n;i++)a[i]=max(a[i],a[i-1]+1);cout<<a[n]<<endl;}
signed main()
{IOS;int _=1;cin>>_;while(_--)solve(); return 0;
} 

http://www.hkcw.cn/article/OmoQdpasNr.shtml

相关文章

复数三角不等式简介及 MATLAB 演示

复数三角不等式简介及 MATLAB 演示 1. 复数三角不等式简介 复数三角不等式&#xff08;Complex Triangle Inequality&#xff09;是复数的一种重要性质&#xff0c;它类似于普通的三角不等式&#xff0c;但适用于复数空间。具体来说&#xff0c;复数三角不等式可以描述复数之…

学术合作交流

想找志同道合的科研小伙伴&#xff01;研究方向包括&#xff1a;计算机视觉&#xff08;CV&#xff09;、人工智能&#xff08;AI&#xff09;、目标检测、行人重识别、行人搜索、虹膜识别等。欢迎具备扎实基础的本科、硕士及博士生加入&#xff0c;共同致力于高质量 SCI 期刊和…

2025-05-31 Python深度学习10——模型训练流程

文章目录 1 数据准备1.1 下载与预处理1.2 数据加载 2 模型构建2.1 自定义 CNN 模型2.2 GPU加速 3 训练配置3.1 损失函数3.2 优化器3.3 训练参数 4 训练循环4.1 训练模式 (model.train())4.2 评估模式 (model.eval()) 5 模型验证 本文环境&#xff1a; Pycharm 2025.1Python 3.1…

十五、STM32的TIM(六)(PWM驱动舵机)

介绍&#xff1a;本章节主要讲解如何在 STM32C8T6 上使用 PWM 驱动舵机。通过按键输入控制&#xff0c;输出以 PWM 信号调整舵机转动角度&#xff0c;从而实现对舵机的精准控制。 目录 一、接线图 二、相关参数的计算 三、相关代码的编写 四、程序现象 一、接线图 二、相关…

C语言指针完全指南:从入门到精通(上)

目录 一、内存和指针 1.1 指针的使用场景 二、指针变量和地址 2.1 取地址符(&) 2.2指针变量和解引用操作符(*) 2.2.1 指针变量 2.3 指针变量的大小 三、指针变量类型的意义 3.2 指针-整数 ​编辑 四、指针计算 五、const修饰指针 5.1 const修饰变量 1.2 const修饰…

Kafka数据怎么保障不丢失

在分布式消息系统中&#xff0c;数据不丢失是核心可靠性需求之一。Apache Kafka 通过生产者配置、副本机制、持久化策略、消费者偏移量管理等多层机制保障数据可靠性。以下从不同维度解析 Kafka 数据不丢失的核心策略&#xff0c;并附示意图辅助理解。 一、生产者端&#xff1a…

Win10秘笈:两种方式修改网卡物理地址(MAC)

Win10秘笈&#xff1a;两种方式修改网卡物理地址&#xff08;MAC&#xff09; 在修改之前&#xff0c;可以先确定一下要修改的网卡MAC地址&#xff0c;查询方法有很多种&#xff0c;比如&#xff1a; 1、在设置→网络和Internet→WLAN/以太网&#xff0c;如下图所示。 2、在控…

Angularjs-Hello

1 关于Angularjs 最近因为项目需要又要做这个&#xff0c;所以简单复习下。其实这个大概7&#xff0c;8年前就用过&#xff0c;当时做了几个简单页面觉得太简单就还是回去做嵌入式了。按照互联网技术的进化速度&#xff0c;本来以为早死在 沙滩上了&#xff0c;没想到现在还在坚…

红外遥控(外部中断)

目录 1.红外遥控简介 通信方式&#xff1a; 红外LED波长&#xff1a; 通信协议标准&#xff1a; 2.硬件电路 发送部分1&#xff1a; 内部元件介绍&#xff1a; 工作原理&#xff1a; 为什么要以38KHZ亮灭&#xff1f; 电路图&#xff1a; 发送部分2&#xff1a; 电…

leetcode hot100刷题日记——33.二叉树的层序遍历

解题总结二维vector的初始化方法 题目描述情况1&#xff1a;不确定行数和列数情况2&#xff1a;已知行数和列数情况3&#xff1a;已知行数但不知道列数情况4&#xff1a;已知列数但不知道行数 题目描述 解答&#xff1a;用队列 思路都差不多&#xff0c;我觉得对于我自己来说&a…

GitToolBox 插件安装与配置指南

GitToolBox 插件安装与配置指南 GitToolBox GitToolBox IntelliJ plugin 项目地址: https://gitcode.com/gh_mirrors/gi/GitToolBox 1. 项目基础介绍和主要编程语言 项目基础介绍 GitToolBox 是一个专为 JetBrains 家族 IDE&#xff08;如 IntelliJ IDEA、PyCharm 等&…

开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM-结构化输出(三)

一、前言 在人工智能技术迅猛发展的今天,高效推理框架与强大语言模型的结合正不断突破应用边界。vLLM作为新一代高性能推理引擎,凭借其创新的PagedAttention技术和内存优化能力,为大规模语言模型部署提供了全新可能。 本文将聚焦vLLM框架与QWen3-8B这一国产开源大模型的深度…

史上最全 Git 图文教程(非常详细)零基础入门到精通,收藏这一篇就够了

戳上方蓝字“Java知音”关注我 Git安装 安装 1.先去官网下载这个软件, 准备安装到本电脑中 https://git-scm.com/ 2.根据自己电脑系统下载此软件到本机 Windows 系统直接下载 .exe 文件即可&#xff0c;macOS 系统使用 Homebrew 命令行安装&#xff0c;终端输入 git --versi…

GitHub学生认证申请

想要免费使用Copilot&#xff0c;申请学生认证可以免费使用。在申请过程中&#xff0c;踩了些坑。记录一下供大家参考 认证有效期 默认时长&#xff1a;首次认证成功后&#xff0c;学生权益&#xff08;如 GitHub Pro 权限和 Student Developer Pack&#xff09;的有效期一般为…

最新Spring Security实战教程(十五)快速集成 GitHub 与 Gitee 的社交登录

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

Vue3 开源UI 框架推荐 (总有一款适合你)

一 、前言 &#x1f4a5;这篇文章主要推荐了支持 Vue3 的开源 UI 框架&#xff0c;包括 web 端和移动端的多个框架&#xff0c;如 Element-Plus、Ant Design Vue 等 web 端框架&#xff0c;以及 Vant、NutUI 等移动端框架&#xff0c;并分别介绍了它们的特性和资源地址。&#…

Java 版 Manus 实现来了,Spring AI Alibaba 发布开源 OpenManus 实现

大家好&#xff0c;我是玄姐。 此次官方发布的 Spring AI Alibaba OpenManus 实现&#xff0c;涵盖了完整的多智能体任务规划、思考与执行流程。这一版本专为 Java 开发者设计&#xff0c;能够让开发者亲身体验多智能体协同工作的强大效果。它具备根据用户问题进行深度分析、操…

Linux之基础开发工具二(makefile,git,gdb)

目录 一、自动化构建-make/makefile 1.1、背景 1.2、基本使用 1.3、推导过程 1.4、语法拓展 二、进度条小程序 2.1、回车与换行 2.2、行缓冲区 2.3、练手-倒计时程序 2.4、进度条程序 三、版本控制器-Git 3.1、版本控制器 3.2、gitee的使用 3.2.1、如何创建仓库 …

如何使用gitee进行代码管理(常见的两种私人令牌-HTTPS和公钥SSH)

Getee平台提供了四种方式管理代码&#xff0c;如下图所示&#xff1a; 一、使用私人令牌&#xff08;HTTPS&#xff09;管理代码 优点&#xff1a;账户下所有项目都可以操作&#xff0c;并且使用快捷&#xff0c;过程简单&#xff0c;可以选择令牌的权限范围&#xff0c;HTTPS…

@PathVariable注解-补充

这段代码是 Spring MVC 框架中使用 RESTful 风格的请求处理方法&#xff0c;详细解释其功能和注解&#xff1a; 代码功能概述 这段 Java 代码定义了一个 Spring MVC 控制器方法&#xff0c;用于处理 RESTful 风格的 URL 请求。它可以从 URL 路径中提取参数&#xff0c;并将这…