2.10日学习总结

题目一:

AC代码 

#include <stdio.h>#define N 1000000typedef long long l;int main() {int n, m;l s = 0;l a[N + 1], b[N + 1];int i = 1, j = 1;scanf("%d %d", &n, &m);for (int k = 1; k <= n; k++) {scanf("%lld", &a[k]);}for (int k = 1; k <= m; k++) {scanf("%lld", &b[k]);}while (i <= n && j <= m) {if (s + a[i] < b[j]) {s += a[i++];} else {s = b[j++];}}while (i <= n) {s += a[i++];}printf("%lld\n", s);return 0;
}

题解:

1.类型定义 

typedef long long l;

typedef long long l;:将 long long 类型重命名为 l,后续代码中就可以用 l 来定义长整型变量,让代码更简洁。

2.main 函数及变量声明

int n, m;:定义两个整型变量 nm,分别用于存储数组 ab 的长度。

l s = 0;:定义一个长整型变量 s 并初始化为 0,这个变量用于存储累加结果。

l a[N + 1], b[N + 1];:定义两个长整型数组 ab,数组长度为 N + 1,这样数组的有效下标范围是从 1 到 N

int i = 1, j = 1;:定义两个整型变量 ij 并初始化为 1,它们分别作为数组 ab 的下标,用于遍历数组元素。

3.核心逻辑

    while (i <= n && j <= m) {if (s + a[i] < b[j]) {s += a[i++];} else {s = b[j++];}}

 while (i <= n && j <= m):只要数组 ab 都还有未处理的元素,就会继续执行循环。

if (s + a[i] < b[j]):如果当前累加结果 s 加上数组 a 的当前元素 a[i] 小于数组 b 的当前元素 b[j],就把 a[i] 累加到 s 中,然后 i 加 1,指向下一个 a 数组元素。

else:否则,将 s 更新为 b[j],然后 j 加 1,指向下一个 b 数组元素

 4.总结

这段代码的主要逻辑是:依次比较数组 ab 的元素,根据特定规则更新累加结果 s,直到数组 b 的元素全部处理完,再把数组 a 剩余的元素累加到 s 中,最后输出 s 的值。

 题目二: 

AC代码 :

#include <stdio.h>#define S 1000005// 模拟队列的结构体
typedef struct {int d[S];int f;int r;
} Q;// 初始化队列
void i(Q *q) {q->f = 0;q->r = 0;
}// 判断队列是否为空
int e(Q *q) {return q->f == q->r;
}// 入队操作
void en(Q *q, int v) {q->d[q->r++] = v;
}// 出队操作
int de(Q *q) {return q->d[q->f++];
}// 获取队首元素
int fr(Q *q) {return q->d[q->f];
}int s[S], a[S];
int n;int main() {Q q;i(&q);// 输入 nscanf("%d", &n);// 先制造一叠牌(1,2,...,n)for (int j = 1; j <= n; j++) {en(&q, j);}// 开始模拟for (int j = 1; !e(&q); j++) {en(&q, fr(&q));de(&q);s[j] = fr(&q);de(&q);}// 将 j 放在 s[j] 处,经过一通操作后,就在正确的位置了for (int j = 1; j <= n; j++) {a[s[j]] = j;}// 输出for (int j = 1; j <= n; j++) {printf("%d ", a[j]);}printf("\n");return 0;
}

题解: 

1.队列结构体定义

// 模拟队列的结构体
typedef struct {int d[S];int f;int r;
} Q;

 typedef struct:定义一个结构体类型 Q 来模拟队列。

int d[S]:一个长度为 S 的整型数组,用于存储队列中的元素。

int f:表示队列的队首指针,指向队列中第一个元素的位置。

int r:表示队列的队尾指针,指向队列中下一个可插入元素的位置。

2.队列操作函数

初始化队列
// 初始化队列
void i(Q *q) {q->f = 0;q->r = 0;
}

void i(Q *q):该函数用于初始化队列,将队首指针 f 和队尾指针 r 都置为 0,表示队列为空。

判断队列是否为空
// 判断队列是否为空
int e(Q *q) {return q->f == q->r;
}

 int e(Q *q):该函数用于判断队列是否为空。如果队首指针 f 等于队尾指针 r,则表示队列为空,返回 1;否则返回 0。

入队操作
// 入队操作
void en(Q *q, int v) {q->d[q->r++] = v;
}

 void en(Q *q, int v):该函数用于将元素 v 插入到队列中。将元素 v 存储在队列数组 dr 位置,然后将队尾指针 r 加 1。

出队操作
// 出队操作
int de(Q *q) {return q->d[q->f++];
}

int de(Q *q):该函数用于从队列中取出队首元素。返回队列数组 df 位置的元素,然后将队首指针 f 加 1。

获取队首元素
// 获取队首元素
int fr(Q *q) {return q->d[q->f];
}

 int fr(Q *q):该函数用于获取队列的队首元素,直接返回队列数组 df 位置的元素。

3.主函数

初始化队列
Q q;
i(&q);

 定义一个队列变量 q,并调用 i 函数对其进行初始化。

构建初始牌堆
// 先制造一叠牌(1,2,...,n)
for (int j = 1; j <= n; j++) {en(&q, j);
}

使用 for 循环将编号从 1 到 n 的扑克牌依次入队,构建初始的牌堆。

 模拟扑克牌操作过程
// 开始模拟
for (int j = 1; !e(&q); j++) {en(&q, fr(&q));de(&q);s[j] = fr(&q);de(&q);
}

 for (int j = 1; !e(&q); j++):只要队列不为空,就持续进行操作。

en(&q, fr(&q));:将队首元素取出并重新插入到队尾。

de(&q);:将队首元素出队。

s[j] = fr(&q);:记录当前队首元素的编号到 s 数组中。

de(&q);:将队首元素出队。

确定每个位置对应的原始牌编号
// 将 j 放在 s[j] 处,经过一通操作后,就在正确的位置了
for (int j = 1; j <= n; j++) {a[s[j]] = j;
}

 通过遍历 s 数组,将 j 存储到 a 数组的 s[j] 位置,从而得到每个位置最终对应的原始牌编号。

4.总结:模拟队列的操作,对一叠扑克牌进行特定的操作,最终找出每个位置最终对应的原始牌编号并输出。主要步骤包括初始化队列、构建初始牌堆、模拟操作过程、确定最终位置对应关系以及输出结果。

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

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

相关文章

Spring Boot Actuator(官网文档解读)

定义 Spring Boot Actuator 是 Spring Boot 提供的一个用于监控和管理应用程序的模块。它能够提供各种生产级别的功能&#xff0c;如健康检查、度量指标收集、配置属性查看等&#xff0c;帮助开发者了解应用的内部状态并进行故障排查。 Actuator 引入 要启用 Actuator…

如何实现图片式按钮的功能

文章目录 1. 概念介绍2. 使用方法2.1 filled风格2.2 filledTonal风格2.3 outlined风格 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"如何修改NavigationBar组件的形状"相关的内容&#xff0c;本章回中将介绍IconButtion组件.闲话休提…

[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别

一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语&#xff08;input prompt&#xff09;以获得更优模型效果的技术。举个例子&#xff0c;如果我们想将一条英语句子翻译成德语&#xff0c;可以采用多种不同的方式向模型提问&#xff0c;如下图所示&#xf…

2月10日QT

作业> 将文本编辑器功能完善 include "widget.h" #include "ui_widget.h" #include <QMessageBox> //消息对话框类 #include <QFontDialog> //字体类对话框 #include <QFont> //字体类 #include <QColorDialog> //颜…

安卓开发,底部导航栏

1、创建导航栏图标 使用系统自带的矢量图库文件&#xff0c;鼠标右键点击res->New->Vector Asset 修改 Name , Clip art 和 Color 再创建一个 同样的方法再创建四个按钮 2、添加百分比布局依赖 app\build.gradle.kts 中添加百分比布局依赖&#xff0c;并点击Sync Now …

Spring Boot中实现多租户架构

文章目录 Spring Boot中实现多租户架构多租户架构概述核心思想多租户的三种模式优势挑战租户识别机制1. 租户标识(Tenant Identifier)2. 常见的租户识别方式3. 实现租户识别的关键点4. 租户识别示例代码5. 租户识别机制的挑战数据库隔离的实现1. 数据库隔离的核心目标2. 数据…

《LeetCode Hot100》 Day01

Day01 轮转数组 思路&#xff1a; &#xff08;1&#xff09; 使用O(1) 空间复杂度解决&#xff0c;就需要原地解决&#xff0c;不能创建新的数组。 &#xff08;2&#xff09; 先整体反转数组&#xff0c;再反转前k个数&#xff0c;再反转剩下的数。即可完整本题。 &…

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…

【网络安全】服务器安装Docker及拉取镜像教程

文章目录 1. 安装 Docker2. 拉取镜像3. 运行 Ubuntu 容器4. 执行相关操作5. 退出并停止容器1. 安装 Docker # 更新软件包索引 sudo apt update# 安装必要的依赖 sudo apt install -y ca-certificates curl gnupg

Python应用指南:一个库解决常见的国内坐标系转换需求

在地理信息系统&#xff08;GIS&#xff09;和位置服务开发中&#xff0c;坐标转换是一项基础且至关重要的任务&#xff0c;不同坐标系统间的精确转换对于确保地图显示的准确性和提升基于地理位置的服务质量至关重要。coord-convert 库专为解决这一系列坐标转换问题而设计&…

win32汇编环境,对线程的创建与操作示例一

;运行效果 ;win32汇编环境,对线程的创建与操作示例一 ;线程是主进程之外并行运行着的过程&#xff0c;很多的时候&#xff0c;我们需要一些运算保持运行&#xff0c;但又不能影响进程&#xff0c;这个时候就需要线程 ;比如&#xff0c;在游戏外挂之中&#xff0c;需要每隔几秒判…

用 DeepSeek + Kimi 自动做 PPT,效率起飞

以下是使用 DeepSeek Kimi 自动做 PPT 的详细操作步骤&#xff1a; 利用 DeepSeek 生成 PPT 内容&#xff1a; 访问 DeepSeek 官网&#xff0c;完成注册/登录后进入对话界面。输入指令&#xff0c;例如“请用 Markdown 格式生成一份关于[具体主题]的 PPT 大纲&#xff0c;需包…

学习总结二十九

公路维修问题 这里首先先明白题意&#xff0c;就是一段路分为m段&#xff0c;只需要分m-1次。我们先要解决的的问题是如何在合适的地方截断。案例给出&#xff0c;发现第一段的末与第二段的头的位置相差很大&#xff0c;而每一段的每个坑位相差不是很大 。&#xff0c;所以就知…

C语言预处理艺术:编译前的魔法之旅

&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xff08;1&…

【go】交叉编译

发现go像是c&#xff0c;做后台还是比较好的 使用的是goland编辑器&#xff0c;可以在windows编译在linux上运行&#xff0c;配置如下&#xff1a; Goland中导入包标红但是能用解决办法 复制了一份项目代码task为task_bk&#xff0c;但是原来的task删除了&#xff0c;再次 把t…

防御综合实验

需求一 配置vlan [SW2]int g 0/0/2 [SW2-GigabitEthernet0/0/2]port link-type access [SW2-GigabitEthernet0/0/2]port default vlan 10 [SW2-GigabitEthernet0/0/2]int g0/0/3 [SW2-GigabitEthernet0/0/3]port link-type access [SW2-GigabitEthernet0/0/3]port default vl…

数据库高安全—数据保护:数据动态脱敏

书接上文数据库高安全—审计追踪&#xff1a;传统审计&统一审计&#xff0c;从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读&#xff0c;本篇将从数据动态脱敏方面对高斯数据库的数据保护技术进行解读。 5.1 数据动态脱敏 数据脱敏&#xff0c;顾名思义就…

《艾尔登法环》运行时弹窗“由于找不到vcruntime140.dll,无法继续执行代码”要怎么解决?

宝子们&#xff0c;是不是在玩《艾尔登法环》的时候&#xff0c;突然弹出一个提示&#xff1a;“由于找不到vcruntime140.dll&#xff0c;无法继续执行代码”&#xff1f;这可真是让人着急上火&#xff01;别慌&#xff0c;今天就给大家唠唠这个文件为啥会丢&#xff0c;还有怎…

【Git】Failed to connect to github.com port 443: Timed out

由于DNS污染国内访问github经常会超时&#xff0c;参考网上的方法修改host文件绑定ip过段时间就失效了&#xff0c;这里介绍一个修改工具&#xff0c;通过修改本地host来绕过国内DNS解析实现连接 UsbEAm Hosts Editor UsbEAm Hosts Editor [多平台hosts修改] V3.63 – Dogfigh…

qml RoundButton详解

1、概述 RoundButton是QML&#xff08;Qt Modeling Language&#xff09;中的一种按钮控件&#xff0c;它继承自Button控件&#xff0c;并增加了一个特殊的属性——radius&#xff0c;用于设置按钮圆角的半径。这使得RoundButton能够呈现为带有圆角的形状&#xff0c;而不仅仅…