寒假集训思维训练5题解

A - Full House 2
简单来说就是判断题,可以用讨论,也可以用数组来统计再枚举

#include<bits/stdc++.h>
using namespace std;
int vis[20];
int main() {int x;for(int i=1;i<=4;i++){cin>>x;vis[x]++;}//3     2   - >  3   1       2   2for(int i=1;i<=13;i++){for(int j=1;j<=13;j++){if(i==j)continue;if(vis[i]==3&&vis[j]==1||vis[i]==2&&vis[j]==2){cout<<"Yes";return 0;}}}cout<<"No";return 0;
}

B - Calculator
注意判断 00 00 00的情况就行了,如果是 00 00 00 记得要跳过一个0的位置。

#include<bits/stdc++.h>
using namespace std;
char s[1010];
int main() {cin>>s+1;int n=strlen(s+1);int ans=0;for(int i=1;i<=n;i++){if(s[i]!='0')ans++;else {if(s[i+1]=='0'){i++;ans++;}else{ans++;}}}cout<<ans;return 0;
}

C - Operate 1
仔细想想,如果两个字符串长度的差大于等于2,那么一定无解
如果两个字符串长度一样,我们可以依次枚举每个位置的字符来检查,看看是否至多只有一个位置不一样,因为如果有一个位置不一样,我们可以修改。

如果 S S S的长度刚刚是 T 的长度 + 1 T的长度+1 T的长度+1 ,我们可以考虑S当中删除一个
假设 S S S字符串 [ 1 到 l e n ] [1到len] [1len] 我们还是去做匹配,当遇到一个位置 x x x满足 S [ x ] ! = T [ x ] S[x]!=T[x] S[x]!=T[x] 接下来考虑删除 S [ x ] S[x] S[x] ,那么接下来就要由 S [ x + 1 ] 去匹配 T [ x ] S[x+1]去匹配T[x] S[x+1]去匹配T[x]; S [ x + 2 ] 去匹配 T [ x + 1 ] S[x+2]去匹配T[x+1] S[x+2]去匹配T[x+1]; S [ x + 3 ] 去匹配 T [ x + 2 ] S[x+3]去匹配T[x+2] S[x+3]去匹配T[x+2];以此类推,所以同学们只需要写另一个循环来枚举就行了。

如果S的长度比T短1,实际上插入我们是不好思考的,因为不知道在哪里插入。我们可以反向思考,S插入一个相当于T删除一个,那么问题变为 了检查T字符串删除一个 能不能变为S字符串,用上面的方法就行了

#include<bits/stdc++.h>
using namespace std;
char s[500010];
char t[500010];
int main() {int k;cin>>k;cin>>s+1;cin>>t+1;int n=strlen(s+1);int m=strlen(t+1);if(abs(m-n)>1){cout<<"No";return 0;}if(n==m){//长度一样但是字符串不一样int op=0;//修改次数 for(int i=1;i<=n;i++){if(s[i]!=t[i]){op++;}} if(op<=1){cout<<"Yes";return 0;}else {cout<<"No";return 0;}}if(n==m+1){//只能考虑删一个  int pos;for(int i=1;i<=n;i++){if(s[i]!=t[i]){pos=i;break;}}for(int i=pos+1,j=pos;i<=n;i++,j++){if(s[i]!=t[j]){cout<<"No";return 0;}} cout<<"Yes";return 0;}if(n==m-1){//只能考虑插入一个  等价于T串删除一个位置 int pos;for(int i=1;i<=m;i++){if(s[i]!=t[i]){pos=i;break;}}for(int i=pos+1,j=pos;i<=m;i++,j++){if(s[j]!=t[i]){cout<<"No";return 0;}} cout<<"Yes";return 0;}return 0;
}

D - Equally
其实那么三个数一样,要么把两个小一点的放在一块,来检查。所以排序就行了

#include<bits/stdc++.h>
using namespace std;
int A[5];
int main() {for(int i=1;i<=3;i++){cin>>A[i];}sort(A+1,A+1+3);if(A[1]==A[3]||A[1]+A[2]==A[3]){cout<<"Yes";}else{cout<< "No";}return 0;
}

E - Santa Claus 1
这个问题简单来说就是,你控制的人在 ( x , y ) (x,y) (x,y)位置,接下来有一系列指令 T T T字符串,你要按指令去走格子,吃糖果(我视为@ 是糖果,吃了之后修改为 . 点)
注意不要越界

#include<bits/stdc++.h>
using namespace std;
char s[110][110];
char T[10010];
int main() {int n,m,x,y;cin>>n>>m>>x>>y;for(int i=1;i<=n;i++){cin>>s[i]+1;}cin>>T+1;int len=strlen(T+1);int ans=0;for(int i=1;i<=len;i++){if(T[i]=='U'){if(s[x-1][y]=='.'||s[x-1][y]=='@'){x--;if(s[x][y]=='@'){ans++;s[x][y]='.';}}}else if(T[i]=='D'){if(s[x+1][y]=='.'||s[x+1][y]=='@'){x++;if(s[x][y]=='@'){ans++;s[x][y]='.';}}}if(T[i]=='L'){if(s[x][y-1]=='.'||s[x][y-1]=='@'){y--;if(s[x][y]=='@'){ans++;s[x][y]='.';}}}if(T[i]=='R'){if(s[x][y+1]=='.'||s[x][y+1]=='@'){y++;if(s[x][y]=='@'){ans++;s[x][y]='.';}}}}cout<<x<<" "<<y<<" "<<ans;return 0;
}

F - Illuminate Buildings
其实,我们可以来枚举从哪个灯开始,接下来依次枚举间隔,来检查最大值就行了

即我先枚举从第 i i i个灯开始,接下来 i 到 N i到N iN的灯都有可能选,接下来枚举间隔 j = 1 , 2 , 3... ( n − i ) j=1,2,3...(n-i) j=1,2,3...(ni)
来检查每间隔 j j j,是不是还是第 i i i个灯一样的灯 最后保留最大值

#include<bits/stdc++.h>
using namespace std;
const int N=3005;
int h[N];
int main(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>h[i];int ans=1;for(int t=1;t<=n;t++){//暴力枚举间隔for(int i=1;i<=t;i++){int sum=0;for(int j=i;j<=n;j+=t){ans=max(ans,sum);if(j==i||h[j]==h[j-t])sum++;else sum=1;ans=max(ans,sum);}//求出最长的合法序列}}cout<<ans<<"\n";
}

G题H题不讲了

I - Perfect Standings
题目是这样子的,一场比赛有 A , B , C , D , E A,B,C,D,E A,B,C,D,E五道题,每道题的分数给我们了
题目想让我们输出,在所有的解题情况当中,前31名的做题情况。
即先按做题得到的总分排序,如果总分一样的两个人,按做题的题目编号来排序,类似于如果小明做了ABC题得分 跟 小刚做了BCD题一样,那么按字典序来排序的话(字典序指的是,两个字符串从前往后做比较,谁第一次比另一个小了,谁的字典序就更小)。按字典序排序,应该先输出小明的做题情况ABC,再输出BCD。

所以这个题首先我们得记录所有可能的做题情况,即对于5道题目,所有的做题可能,都要枚举出来,存下来。

如何枚举5道题目的做题情况呢? 可以考虑0,1 其中0表示没做出来
具体枚举方式请看下面代码。我分别用 i , j , k , p , q 的值表示第 12345 道题目有没有解决 i,j,k,p,q的值表示第1 2 3 4 5道题目有没有解决 i,j,k,p,q的值表示第12345道题目有没有解决
然后来计算分数,统计到结构体里面,顺便记录一下这个人每道题的做题情况,即 A [ i ] = 1 表示第 i 个题做出来了 A[i]=1 表示第i个题做出来了 A[i]=1表示第i个题做出来了

#include<bits/stdc++.h>
using namespace std;
struct node{int solve[6];int fen;
}A[50];
int B[10];
bool cmp(node x,node y){if(x.fen==y.fen){for(int i=1;i<=5;i++){if(x.solve[i]!=y.solve[i])return x.solve[i]>y.solve[i];}		}return x.fen>y.fen;
}
int main() {for(int i=1;i<=32;i++){for(int j=1;j<=5;j++){A[i].solve[j]=0;A[i].fen=0;}}for(int i=1;i<=5;i++){cin>>B[i];	}int num=0;for(int i=0;i<=1;i++){for(int j=0;j<=1;j++){for(int k=0;k<=1;k++){for(int p=0;p<=1;p++){for(int q=0;q<=1;q++){num++;// num记录  哪一种做题情况 A[num].solve[1]=i;A[num].solve[2]=j;A[num].solve[3]=k;A[num].solve[4]=p;A[num].solve[5]=q;// solve[5] 表示第5个题的做题情况 for(int w=1;w<=5;w++){A[num].fen+=B[w]*A[num].solve[w];//计算当前这个情况的总分//B数组对应的是第w道题的分数//solve[w] 对应第w道题 当前有没有做出来//没做出来就是0去做乘法,所以拿不到这个题的分数  }	}}}}}sort(A+1,A+1+33,cmp);// 排序    注意要写好排序函数   分数一样的情况  for(int i=1;i<=31;i++){ //输出前31名的做题情况 for(int j=1;j<=5;j++){// 枚举当前这个人做了哪些题,按字母输出   if(A[i].solve[j]==1){ //检查当前这个人 第j道题有没有做出来   cout<<char('A'+j-1);}}cout<<'\n';}return 0;
}

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

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

相关文章

ubuntu 本地部署deepseek r1 蒸馏模型

本文中的文件路径或网络代理需要根据自身环境自行删改 一、交互式chat页面 1.1 open-webui 交互窗口部署&#xff1a;基于docker安装&#xff0c;且支持联网搜索 Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台&#xff0c;旨在完全离线操作。它支持各种 LLM…

数据库 绪论

目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库&#xff08;DB&#xff09; 4.数据库管理系统&#xff08;DBMS&#xff09; 5.数据库系统&#xff08;DBS&#xff09; 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…

HTML5 新特性有哪些?

HTML5 引入了许多新特性&#xff0c;主要包括以下几类&#xff1a; 语义化标签&#xff1a;如 <header>、<nav>、<article>、<section>、<aside>、<footer> 等&#xff0c;使代码结构更清晰&#xff0c;利于搜索引擎优化和代码维护。表单…

微软编程之C#如何学习,C#学习路线:从入门到精通

引言 C# 是一种由微软开发的面向对象编程语言&#xff0c;广泛应用于 Windows 应用程序开发、游戏开发&#xff08;Unity&#xff09;、Web 开发&#xff08;ASP.NET&#xff09;等领域。对于初学者来说&#xff0c;掌握 C# 不仅能够打开编程世界的大门&#xff0c;还能为未来…

数据中台是什么?:架构演进、业务整合、方向演进

文章目录 1. 引言2. 数据中台的概念与沿革2.1 概念定义2.2 历史沿革 3. 数据中台的架构组成与关键技术要素解析3.1 架构组成3.2 关键技术要素 4. 数据中台与其他平台的对比详细解析 5. 综合案例&#xff1a;金融行业数据中台落地实践5.1 背景5.2 解决方案5.3 成果与价值 6. 方向…

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型&#xff0c;以其…

如何使用C++将处理后的信号保存为PNG和TIFF格式

在信号处理领域&#xff0c;我们常常需要将处理结果以图像的形式保存下来&#xff0c;方便后续分析和展示。C提供了多种库来处理图像数据&#xff0c;本文将介绍如何使用stb_image_write库保存为PNG格式图像以及使用OpenCV库保存为TIFF格式图像。 1. PNG格式保存 使用stb_ima…

查出 product 表中所有 detail 字段包含 xxx 的完整记录

您可以使用以下 SQL 查询语句来查出 product 表中所有 detail 字段包含 oss.kxlist.com 的完整记录&#xff1a; SELECT * FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;下面是detail字段包含的完整内容 <p><img style"max-width:100%;" src…

微服务 day01 注册与发现 Nacos OpenFeign

目录 1.认识微服务&#xff1a; 单体架构&#xff1a; 微服务架构&#xff1a; 2.服务注册和发现 1.注册中心&#xff1a; 2.服务注册&#xff1a; 3.服务发现&#xff1a; 发现并调用服务&#xff1a; 方法1&#xff1a; 方法2&#xff1a; 方法3:OpenFeign OpenFeig…

Shell原理简介与Linux中的权限问题

一、Shell命令及运行原理 1.1通常说的计算机体系结构指的是什么 通常意义上的计算机体系结构指的是芯片&#xff1a; 如锐龙amd&#xff0c;英特尔酷睿intel core 他们分为 x86&#xff1a;32位 x86_64&#xff1a;64位 两种 1.2广义上的Linux系统分为哪些部分&#xf…

在rtthread中,scons构建时,它是怎么知道是从rtconfig.h找宏定义,而不是从其他头文件找?

在rtthread源码中&#xff0c;每一个bsp芯片板级目录下都有一个 SConstruct scons构建脚本的入口&#xff0c; 在这里把rtthread tools/目录下的所有模块都添加到了系统路径中&#xff1a; 在tools下所有模块中&#xff0c;最重要的是building.py模块&#xff0c;在此脚本里面…

C# Winform 使用委托实现C++中回调函数的功能

C# Winform 使用委托实现C中回调函数的功能 在项目中遇到了使用C#调用C封装的接口&#xff0c;其中C接口有一个回调函数的参数。参考对比后&#xff0c;在C#中是使用委托(delegate)来实现类似的功能。 下面使用一个示例来介绍具体的使用方式&#xff1a; 第一步&#xff1a;…

【系统架构设计师】体系结构文档化

目录 1. 说明2. 重要性3. 主要内容4. 编写原则5. 实践建议6. 例题6.1 例题1 1. 说明 1.绝大多数的体系结构都是抽象的&#xff0c;由一些概念上的构建组成。2.层的概念在任何程序设计语言中都不存在。3.要让系统分析员和程序员去实现体系结构&#xff0c;还必须将体系结构进行…

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…

深度学习之神经网络框架搭建及模型优化

神经网络框架搭建及模型优化 目录 神经网络框架搭建及模型优化1 数据及配置1.1 配置1.2 数据1.3 函数导入1.4 数据函数1.5 数据打包 2 神经网络框架搭建2.1 框架确认2.2 函数搭建2.3 框架上传 3 模型优化3.1 函数理解3.2 训练模型和测试模型代码 4 最终代码测试4.1 SGD优化算法…

机器学习之心的创作纪念日

机缘 今天&#xff0c;是我成为创作者的第1460天。 在这段时间里&#xff0c;获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分&#xff0c;尤其是在我的工作中&#xff0c;创作是不可或缺的&#xff0c;创作都是核心能力之一。…

【RabbitMQ重试】重试三次转入死信队列

以下是基于RabbitMQ死信队列实现消息重试三次后转存的技术方案&#xff1a; 方案设计要点 队列定义改造&#xff08;核心参数配置&#xff09; Bean public Queue auditQueue() {Map<String, Object> args new HashMap<>();args.put("x-dead-letter-exchan…

软件工程-软件需求分析基础

基本任务 准确地回答“系统必须做什么&#xff1f;”&#xff0c;也就是对目标系统提出完整、准确、清晰、具体的要求 目标是&#xff0c;在分析阶段结束之前&#xff0c;系统分析员应该写出软件需求规格说明书&#xff0c;以书面形式准确地描述软件需求。 准则 1&#xff…

2025.2.9 每日学习记录2:技术报告写了一半+一点点读后感

0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右&#xff0c;一次性备考笔试的三个科目 1.实习申请技术准备&#xff1a;微调、Agent、RAG 1.今日完成任务 1.电子斗蛐蛐&#xff08;文本书写领域&am…

9 Pydantic复杂数据结构的处理

在构建现代 Web 应用时&#xff0c;我们往往需要处理复杂的输入和输出数据结构。例如&#xff0c;响应数据可能包含嵌套字典、列表、元组&#xff0c;甚至是多个嵌套对象。Pydantic 是一个强大的数据验证和序列化库&#xff0c;可以帮助我们轻松地处理这些复杂的数据结构&#…