牛客周赛 Round 92(再现京津冀蓝桥杯???)

1. 小红的签到题

现在小红希望你写出一个长度为 nnn 的、使用了下划线命名法命名的变量。为了显出特征,请保证该变量至少由两个单词组成。

输入描述:

输入一个正整数 n(3≦n≦100),代表需要构造的变量长度。

输出描述:

输出一个长度为 n 的字符串,代表你所构造的使用了下划线命名法命名的变量。 如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

示例1

输入

11

输出

kato_megumi

解题思路:根据长度n构造答案

#include<bits/stdc++.h>
using namespace std;
int main(){int n; cin>>n;cout<<"f_"<<string(n-2,'f')<<endl;
}

 2. 小红的模拟题

给定一个 n 行 m 列的网格,我们使用 (i,j) 表示网格中从上往下数第 i 行和从左往右数第 j 列的格子。小红现在位于 (1,1),准备前往 (n,m)。
然而,不是所有的格子都是可以通行的,有且恰有一个格子是陷阱格,一旦小红踏入陷阱格,就会直接去逝。保证这个陷阱格不会出现在 (1,1)和 (n,m)。
小红每一步只能向右或者向下前进。请你帮小红规划一条行动路线,使得她可以顺利到达 (n,m)。
行动路线为一个仅由字符 ‘D’、‘S’ 构成的字符串 s,第 i个字符代表小红第 i 次行动的方向。记第 iii 次行动前小红位于 (x,y),则:
,若si​=‘D’,则小红向右移动一格即抵达 (x,y+1);
,若si​=‘S’,则小红向下移动一格即抵达(x+1,y)。

解题思路:由于陷阱只有一个, 从(1,1) 到 (n,m), 特殊情况一种是往右n-1步, 往下走m-1步, 另一种是往下走m-1步, 往右走n-1步, 陷阱最多只会出现在上述两条路径中的一条之中, 所以依次探测即可 

#include <bits/stdc++.h>
using namespace std;
int main() {int n, m;cin >> n >> m;vector<string> grid(n);for(int i=0;i<n;i++) cin>>grid[i];bool f1=true;for(int i=1;i<n;i++){if(grid[i][0]=='#') f1=false;}for(int j=1;j<m;j++){if(grid[n-1][j]=='#') f1=false;}if(f1){for(int i=1;i<n;i++) cout<<'S';for(int j=1;j<m;j++) cout<<'D';return 0;}bool f2=true;for(int j=1;j<m;j++){if(grid[0][j]=='#') f2=false;}for(int i=1;i<n;i++){if(grid[i][m-1]=='#') f2=false;}if(f2){for(int i=1;i<m;i++) cout<<'D';for(int i=1;i<n;i++) cout<<'S';return 0;}return 0;
}

 3.小红的方神题

题目描述

对于数组 a,我们定义它的退化状态为:取每个相邻两数之差的绝对值构成的新数组。换句话说,退化后的 a 数组是一个长度为len(a)−1 的数组,其第 i 个元素为 ∣ai​−ai+1​∣。
 希望小红构造一个长度为 n 的排列,使得其连续进行n−1 次退化后,最终生成的一个整数恰好等于 n−2。你能帮帮小红吗?如果不存在这样的排列,直接输出 −1 即可。
长度为 n 的排列是由 1,2,…,n 这 n个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,{2,3,1,5,4} 是一个长度为 5 的排列,而 {1,2,2} 和 {1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

解题思路: 1/2都不行, n>=3时候, 构造[1,n,n−1,…,2]  相邻差后为:[|1-n|, 1,1,....], 再退化一次为, n-2, 满足题意。

#include <bits/stdc++.h>
using namespace std;
int main(){int n; cin>>n;if(n<=2) { cout<<-1<<endl; return 0; }cout<<1;for(int i=n;i>=2;i--){cout<<" "<<i;}cout<<endl;return 0;
}

4. 小红的数学题 

题目描述

小红拿到了一个正整数 k,她希望你找到两个正整数 p,q,满足 p+q=k,且方程 x^2−px+q=0 存在两个正整数解。特别地,如果不存在这样的 p,q,请输出 −1。

解题思路:设方程的两个根为x1和x2,

x1+x2=p,

x1*x2=q,

x1+x2+x1*x2=k,

x1+x2+x1*x2+1=k+1 

(x1+1)*(x2+1)=k+1

所以, 我们可以将k+1, 分解成两个>=2的数的乘积(a,b)

x1+1=a, x2+1=b, 

p=a+b-2, q=(a-1)*(b-1)

#include <bits/stdc++.h>
using namespace std;
int main(){long long k;cin >> k;long long t = k + 1;long long A = -1, B = -1;for (long long d = 2; d * d <= t; d++) {if (t % d == 0) {A = d;B = t / d;break;}}if (A == -1){cout << -1 << endl;}else{long long p = (A + B - 2);long long q = (A - 1) * (B - 1);cout << p << " " << q << endl;}return 0;
}

 5. 小红的ds题

小红希望你构造一棵层数为 n 的二叉树,其第 i 层恰好有 ai​ 个节点。你能帮帮她吗?
一棵树被称为二叉树,当且仅当其满足:
,∙每个节点要么没有父节点连接(此时该节点被称为根节点)、要么被 1 个父节点连接(此时该节点被称为父节点的子节点;

∙每个节点连接的子节点数量要么为 0(此时该节点被称为叶子节点)、要么小于等于 2(此时该节点被称为分支节点)。

#include <bits/stdc++.h>
using namespace std;
int main() {int n;  cin >> n;vector<int> nums(n);  int total = 0;for (int i = 0; i < n; i++) {cin >> nums[i];total += nums[i];}vector<int> son_cnt(total, 0);     vector<vector<int>> tmp(total);   int start = 0;int pt = nums[0];  for (int i = 1; i < n; i++) {int new_start = pt;while (nums[i]--) {while (son_cnt[start] == 2) {start++;}son_cnt[start]++;tmp[start].push_back(pt);pt++;}start = new_start;}cout << 1 << endl;  for (int i = 0; i < total; i++) {if (tmp[i].empty()) {cout << "-1 -1"<<endl;} else if (tmp[i].size() == 1) {cout << "-1 " << tmp[i][0] + 1 <<endl;} else {cout << tmp[i][0] + 1 << ' ' << tmp[i][1] + 1 << endl;}}return 0;
}

6.小红的小苯题 

题目描述

小苯希望小红构造一个 n 行 m 列的矩阵,满足:
,∙每一行所有元素的异或和、每一列所有元素的异或和,这 n+m 个数恰好构成一个长度为 n+m的排列
∙矩阵中每个元素的值在 0 到 10^9 之间。
你能帮帮小红吗?
长度为 n 的排列是由 1,2,…,n 这 n 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,{2,3,1,5,4} 是一个长度为 5 的排列,而 {1,2,2} 和 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

解题思路(详细思考过程):

n行m列

设每一行所有元素的异或和分别为R1, R2, R3, .... ,Rn

设每一列所有元素的异或和分别为C1, C2, C3,....Cm

这些 n+m 个行异或和和列异或和合在一起,正好是 1,2,…,n+m 的一个排列

那我们应该怎么构造呢?

我们可以直接让行异或和Ri=i(第 1 行异或和是 1,第 2 行是 2,……,第 n 行是 n)

列异或和 Cj​=n+j(即第 1 列异或和是 n+1,第 2 列是 n+2,……,第 m 列是 n+m)

这个{Ri}U{Cj} ={1,2,3,4,....,n+m}

所有的行异或和R1 xor R2 xor R3 xor...xor Rn应该等于所有列异或和C1 xor C2 xor C3 xor ...xor Cm (因为矩阵的总异或和可以从行或列两个方向计算)

因此, (R1 xor R2 xor R3 xor...xor Rn) xor (C1 xor C2 xor C3 xor ...xor Cm) =0

=> 1 xor 2 xor 3 xor ...xor (n+m)=0

所以, 

只有 1 到 n+m 的异或和为 0 时,才能构造出这样的矩阵

具体构造:

为了简化问题, 

除了最后一列和最后一行,其他位置都填 0

填最后一列(行异或和)

对于前 n−1 行,让它们的最后一列等于行异或和 a[i][m]=Ri =i

(第i行的异或和就是0 xor 0 xor ...i=i)

填最后一行(列异或和)

对于前 m−1 行,让它们的最后一列等于列异或和 a[n][j]=Ci =n+j

(第j列的异或和就是0 xor 0 xor ...(n+j)=n+j)

最后填A[n][m]这个位置, A[n][m]需要同时满足:

1. 第n行的异或和是Rn=n, 2. 第m列的异或和是 Cm=n+m

第 n 行的异或和是 C1 xor C2 xor C3 xor ,,, xor Cm-1 xor t =n

 (n+1) xor (n+2) xor ... xor (n+m-1) xor t=n

所以, t1=n xor (n+1) xor (n+2) xor ... xor (n+m-1) 

同理, 

第m列的异或和是 R1 xor R2 xor R3 xor ... xor Rn-1 xor t

1 xor 2 xor ... xor (n-1) xor t= n+m

所以, t2=(n+m) xor 1 xor 2 xor ... xor (n-1) 

注:t1==t2

最后, 简单说一下代码中各部分的含义

solve函数:计算前k个数的异或和是否等于0

a数组:初始化待构造的数组

然后分别填最后一列的前n-1行, 最后一行的前m-1列

最后填充右下角的元素, 

按t2进行计算

最后输出构造的a数组即可

  1. 性质:1⊕2⊕⋯⊕(n+m)=0。

  2. 构造方法

    • 前 n−1n−1 行的最后一列填 i+1i+1(保证行异或和)

    • 前 m−1m−1 列的最后一行填 n+j+1n+j+1(保证列异或和)

    • 右下角填 T=(n+m)⊕(1⊕2⊕⋯⊕(n−1))T=(n+m)⊕(1⊕2⊕⋯⊕(n−1))。

  3. 输出:直接打印矩阵

#include <bits/stdc++.h>
using namespace std;
int solve(int k) {int ans=0;for(int i=0;i<=k;i++){ans^=i;}return ans;
}
int main(){int n, m;cin >> n >> m;if (solve(n + m) != 0) {cout << -1 << endl;return 0;}vector<vector<long long>> a(n, vector<long long>(m, 0));for (int i = 0; i < n - 1; i++) {a[i][m-1] = i + 1;            }for (int j = 0; j < m - 1; j++) {a[n-1][j] = n + (j + 1);      }long long x = 0;for (int i = 1; i <= n - 1; i++) x ^= i;long long t = (n + m) ^ x;        a[n-1][m-1] = t;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cout << a[i][j] << (j+1<m? ' ' : '\n');}}return 0;
}

感谢大家的点赞和关注,你们的支持是我创作的动力!(有疑问可以发布到评论区)

吐槽:感觉比京津冀某蓝某桥某杯略难吧(想了解可以看我往期题解)

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

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

相关文章

2025-05-11 Unity 网络基础11——UnityWebRequest

文章目录 1 UnityWebRequest 介绍2 搭建 HTTP 服务器3 常用操作3.1下载资源3.1.1 下载文本3.1.2 下载图片3.1.3 下载 AB 包 3.2 上传资源3.2.1 上传数据类3.2.2 POST 上传3.3.3 PUT 上传 4 自定义操作4.1 下载资源4.1.1 Unity 内置 Handler4.1.2 自定义 Handler 4.2 上传资源4.…

GitHub 趋势日报 (2025年05月09日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1voideditor/void⭐ 1879⭐ 15214TypeScript2ruanyf/weekly科技爱好者周刊&…

.NET MAUI 基础知识

文章目录 什么是 .NET MAUI&#xff1f;MAUI的核心特点与Xamarin.Forms的区别 开发环境搭建安装Visual Studio 2022安装必要组件配置Android开发环境配置iOS开发环境验证安装 创建第一个MAUI应用创建新项目MAUI项目结构解析理解关键文件运行应用程序简单修改示例使用热重载 MAU…

卷积神经网络全连接层详解:特征汇总、FCN替代与性能影响分析

【内容摘要】 本文聚焦卷积神经网络&#xff08;CNN&#xff09;的全连接层&#xff0c;详细介绍其将二维特征图转化为一维向量的过程&#xff0c;阐述全卷积网络&#xff08;FCN&#xff09;如何通过转置卷积替代全连接层以实现像素级分类&#xff0c;并分析全连接层对图像分类…

在C++中进行套接字编程时,主要使用以下头文件

目录 一.基本套接字头文件<sys/socket.h><netinet/in.h><arpa/inet.h><unistd.h><netdb.h> 二. 完整示例头文件包含三. 注意事项 在C中进行套接字编程时&#xff0c;主要使用以下头文件&#xff1a; 一.基本套接字头文件 <sys/socket.h>…

【Linux网络】HTTP

应用层协议 HTTP 前置知识 我们上网的所有行为都是在做IO&#xff0c;&#xff08;我的数据给别人&#xff0c;别人的数据给我&#xff09;图片。视频&#xff0c;音频&#xff0c;文本等等&#xff0c;都是资源答复前需要先确认我要的资源在哪台服务器上&#xff08;网络IP&…

JAVA异常体系

在 Java 里&#xff0c;异常体系是其错误处理机制的核心内容&#xff0c;它能够帮助开发者有效应对程序运行时出现的各种意外状况。 异常体系的基本架构 它主要包含两个重要分支&#xff1a; Error&#xff08;错误&#xff09;&#xff1a;这类异常是程序自身无法处理的严重…

vue 去掉右边table的下拉条与下面的白色边框并补充满

::v-deep table {width: 100% !important; } ::v-deep .el-table::after, .el-table::before {display: none !important; }/* 隐藏滚动条但保留滚动功能 */ ::v-deep .el-table__body-wrapper::-webkit-scrollbar {width: 0 !important;height: 0 !important; }::v-deep .el-t…

uniapp+vue3+uview来开发我们的项目

前言&#xff1a; 就像我们vue的web的框架element、iview等一样&#xff0c;我们的uni-app开发也有适合的他的框架&#xff0c;除了他本身的扩展组件以外&#xff0c;第三方好用的就是就是uview了。 实现效果&#xff1a; 官网信息&#xff1a; vue2版本&#xff1a;uview-ui …

数据仓库:企业数据管理的核心引擎

一、数据仓库的由来 数据仓库&#xff08;Data Warehouse, DW&#xff09;概念的诞生源于企业对数据价值的深度挖掘需求。在1980年代&#xff0c;随着OLTP&#xff08;联机事务处理&#xff09;系统在企业中的普及&#xff0c;传统关系型数据库在处理海量数据分析时显露出明显瓶…

YOLOv12模型部署(保姆级)

一、下载YOLOv12源码 1.通过网盘分享的文件&#xff1a;YOLOv12 链接: https://pan.baidu.com/s/12-DEbWx1Gu7dC-ehIIaKtQ 提取码: sgqy &#xff08;网盘下载&#xff09; 2.进入github克隆YOLOv12源码包 二、安装Anaconda/pycharm 点击获取官网链接(anaconda) 点击获取…

一篇解决Redis:持久化机制

目录 认识持久化 持久化方案 RDB&#xff08;Redis DataBase&#xff09; 手动触发 自动触发 小结 AOF(Append-Only File) AOF缓冲区刷新机制 AOF重写机制 AOF重写流程 ​编辑 混合持久化 认识持久化 我们都知道Mysql有四大特征&#xff0c;原子性&#xff0c;持久…

从 Vue3 回望 Vue2:事件总线的前世今生

从 Vue3 回望 Vue2&#xff1a;事件总线的前世今生 以 Vue3 开发者视角回顾 Vue2 中事件总线机制 的文章。文章将围绕事件总线的缘起、用法、局限与演进展开&#xff0c;帮助 Vue3 开发者理解 Vue2 通信方式的历史意义及现代替代方案。 一、前言&#xff1a;Vue3 时代&#xff…

CSS结构性伪类、UI伪类与动态伪类全解析:从文档结构到交互状态的精准选择

一、结构性伪类选择器&#xff1a;文档树中的位置导航器 结构性伪类选择器是CSS中基于元素在HTML文档树中的层级关系、位置索引或结构特征进行匹配的一类选择器。它们无需依赖具体的类名或ID&#xff0c;仅通过文档结构即可精准定位元素&#xff0c;是实现响应式布局和复杂文档…

【SSL证书系列】SSL证书工作原理解读

SSL&#xff08;Secure Sockets Layer&#xff09;及其继任者TLS&#xff08;Transport Layer Security&#xff09;是用于保护网络通信安全的加密协议。SSL证书是实现HTTPS协议的核心&#xff0c;其工作原理涉及加密技术、身份验证和信任机制。以下是其工作原理的详细分步解析…

第二十四天打卡

import os os.getcwd() os.listdir() path_a r"C:\Users\renshuaicheng\Documents" path_b "MyProjectData" file "results.csv" file_path os.path.join(path_a,path_b,file) file_path import osstart_directory os.getcwd() # 假设这个目…

【CUDA】Sgemm单精度矩阵乘法(下)

目录 前言1. 优化技巧5&#xff1a;使用register模拟二级缓存&#xff08;内积转外积&#xff09;2. 优化技巧6&#xff1a;使用register模拟二级缓存 float43. 优化技巧7&#xff1a;global memory转置再存放shared memory4. 优化技巧8&#xff1a;使用double buffer加速矩阵…

【1000以内具有12个以上因子的整数并输出它的因子】2021-12-27

缘由c语言输入1000以内具有12个以上因子的整数 并输出它的因子-编程语言-CSDN问答 int 求因子个数(int 数, int* 因子 { 0 }) {//缘由https://bbs.csdn.net/topics/399168406int 和 0, 求 1, 商 0, 含 0;//因子不含1和数本身while (求 < (商 数 / 求))if (!(数 % 求)…

C#中的dynamic与var:看似相似却迥然不同

在C#编程的世界里&#xff0c;var和dynamic这两个关键字常常让初学者感到困惑。它们看起来都在定义变量时省略了显式类型声明&#xff0c;但实际上它们的工作方式和应用场景有着天壤之别。今天&#xff0c;让我们一起揭开这两个关键字的神秘面纱。 var&#xff1a;编译时的类型…

流速仪数据处理及流量断面线绘制

1 需求描述 在实际航道测量项目中&#xff0c;有测量断面线流量流速的需求&#xff0c;得使用流速仪在现场进行测量&#xff0c;相关操作在之前已经写了记录。本次手册记录后期数据处理与流量线绘制&#xff0c;以该区域为例。 流速仪设备操作说明 2 规范要求 3 流量断面表格…