2025山东CCPC题解

news2025/6/3 0:01:55

文章目录

  • 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.coloradmin.cn/o/2394170.html

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

相关文章

CentOS Stream 9 中部署 MySQL 8.0 MGR(MySQL Group Replication)一主两从高可用集群

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《MySQL技术精粹》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、MySQL 8.0 中的高可用方案 2、适用场景 二、环境准备 1、系统环境说明…

pycharm 新UI 固定菜单栏 pycharm2025 中文版

pycharm 新UI 文件 -> 设置 -> 外观与行为 -> 外观 -> UI选项 -> 主菜单:显示在主工具栏上方. 即可固定

我的世界Java版1.21.4的Fabric模组开发教程(十一)创建方块

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十一章——创建方块。想要阅读其他内容&#xff0c;请查看或订阅上面的专栏。 方块(Block) 是构成Minecraft世界的主要组成部分&#xff0c;是组成游戏地图的最基本单元&#xff0c;也是模组开发的核心元素之一…

VR/AR 视网膜级显示破局:10000PPI 如何终结颗粒感时代?

一、传统液晶 “纱窗效应”&#xff1a;VR 沉浸体验的最大绊脚石 当用户首次戴上 VR 头显时&#xff0c;眼前密密麻麻的像素网格往往打破沉浸感 —— 这正是传统液晶显示在近眼场景下的致命缺陷。受限于 500-600PPI 的像素密度&#xff0c;即使达到 4K 分辨率&#xff0c;等效到…

系统思考:化繁为简的艺术

系统思考&#xff0c;其实是一门化繁为简的艺术。当我们能够把复杂的问题拆解成清晰的核心以及更加简单&#xff0c;从而提升团队的思考品质和行动品质&#xff0c;发挥最大的合力。 每个公司都想在某方面成为最优秀的&#xff0c;但是实际上具有穿透性的洞察力和摆脱虚荣心的清…

Angularjs-Hello

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

Linux 1.0.4

父子shell linux研究的就是shell 打开两个窗口就是两个shell 终端的软件有很多 bash也是一个软件 我们在terminal里面再打开一个bash&#xff0c;然后再次使用ps命令发现多出来一个bash&#xff0c;之后点击exit只是显示了一个exit&#xff0c;这个只是退出了在terminal中打开…

Qt -下载Qt6与OpenCV

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【暂无】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 前言 呃啊&#xff0c;本来就想在 Qt 里简单几个 OpenVC 的函数&#xff0c;没想到一搞就是一天。 我之前的开发环境是 Qt 5.14.2&#xff0c;使用 MinGW 7.3.0 64-bit 编…

机器学习无监督学习sklearn实战一:K-Means 算法聚类对葡萄酒数据集进行聚类分析和可视化( 主成分分析PCA特征降维)

本项目代码在个人github链接&#xff1a;https://github.com/KLWU07/Machine-learning-Project-practice/tree/main/1-Wine%20cluster%20analysis 如果对于聚类算法理论不理解可参考这篇之前文章机器学习中无监督学习方法的聚类&#xff1a;划分式聚类、层次聚类、密度聚类&…

可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?

在Google发布Veo 3几天后,可灵显然感受到了压力,发布了即将推出的视频模型系列可灵 2.1的早期体验版。 据我了解,有三种不同的模式: 可灵 2.1 标准模式: 720p分辨率 仅支持图像转视频(生成更快,一致性更好) 5秒视频仍需20积分 可灵 2.1 专业模式: 1080p分辨率 仅在图…

LLM优化技术——Paged Attention

在Transformer decoding的过程中&#xff0c;需要存储过去tokens的所有Keys和Values&#xff0c;以完成self attention的计算&#xff0c;称之为KV cache。 &#xff08;1&#xff09;KV cache的大小 可以计算存储KV cache所需的内存大小&#xff1a; batch * layers * kv-he…

推荐几个不错的AI入门学习视频

引言&#xff1a;昨天推荐了几本AI入门书&#xff08;AI入门书&#xff09;&#xff0c;反响还不错。今天&#xff0c;我再推荐几个不错的AI学习视频&#xff0c;希望对大家有帮助。 网上关于AI的学习视频特别多。有收费的&#xff0c;也有免费的。我今天只推荐免费的。 我们按…

采用Bright Data+n8n+AI打造自动化新闻助手:每天5分钟实现内容日更

一、引言 在信息爆炸的时代&#xff0c;作为科技领域的内容创作者&#xff0c;我每天都要花费2-3小时手动收集行业新闻、撰写摘要并发布到各个社群。直到我发现Bright Datan8nAI这套"黄金组合"&#xff0c;才真正实现了从"人工搬运"到"智能自动化&qu…

Real SQL Programming

目录 SQL in Real Programs Options Stored Procedures Advantages of Stored Procedures Parameters in PSM SQL in Real Programs We have seen only how SQL is used at the generic query interface --- an environment where we sit at a terminal and ask queries …

Sentinel限流熔断机制实战

1、核心概念 1.1、流量控制 流量控制是为了 防止系统被过多的请求压垮&#xff0c;确保资源合理分配并保持服务的可用性&#xff0c;比如对请求数量的限制。 流量控制的 3 个主要优势&#xff1a; 防止过载&#xff1a;当瞬间涌入的请求量超出系统处理能力时&#xff0c;会…

79. 单词搜索-极致优化,可行性剪枝和顺序剪枝

给你一个目标字符串&#xff0c;和一个二维字符数组&#xff0c;判断在数组中是否能找到目标字符串。 例如&#xff0c;board [["A","B","C","E"],["S","F","C","S"],["A","…

ICDMC 2025:创新媒体模式,迎接数字时代的挑战

2025年数字媒体与通讯国际会议将在风景秀丽的中国山东举行。此次会议致力于促进数字媒体和通讯领域的国际合作与交流&#xff0c;为相关产业发展提供智力支持和技术引领。我们诚挚邀请来自世界各地的学者、研究人员和行业专家参加本次会议&#xff0c;共同探讨前沿问题和发展方…

SoftThinking:让模型学会模糊思考,同时提升准确性和推理速度!!

摘要&#xff1a;人类的认知通常涉及通过抽象、灵活的概念进行思考&#xff0c;而不是严格依赖离散的语言符号。然而&#xff0c;当前的推理模型受到人类语言边界的限制&#xff0c;只能处理代表语义空间中固定点的离散符号嵌入。这种离散性限制了推理模型的表达能力和上限潜力…

晨控CK-UR08与欧姆龙PLC配置Ethernet/IP通讯连接操作手册

晨控CK-UR08与欧姆龙PLC配置Ethernet/IP通讯连接操作手册 晨控CK-UR08系列作为晨控智能工业级别RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。 本期主题&#xff1a;围绕…

开源即战力!从科研到商用:Hello Robot 移动操作机器人Stretch 3多模态传感融合(RGB-D/激光/力矩)控制方案

科研领域对机器人技术的需求日益增长&#xff0c;Hello Robot的移动操作机器人Stretch 3凭借其灵活性和性能满足了这一需求。其模块化设计、开源架构和高精度传感控制能力&#xff0c;使科研人员能够顺利开展实验。Stretch 3以其独特的移动操作能力&#xff0c;为科研探索提供了…