第十次CCF-CSP认证(含C++源码)

第十次CCF-CSP认证

  • 分蛋糕
    • 满分题解
  • 学生排队
    • 满分题解
  • Markdown语法
    • 题目解读
    • 满分代码
  • 结语

分蛋糕

在这里插入图片描述
题目链接

满分题解

基本思路:我们需要保证除了最后一个小朋友之外的所有人,分得的蛋糕都大于等于给定的K值,为什么是大于等于,是因为本题不存在可以把蛋糕切开的情况。
我举个极端的例子 :
假如K值为10
四个蛋糕的重量:9 100 5 1000 1
输出的只能是 3 这样说可能更好地理解我的意思

#include <bits/stdc++.h>
using namespace std;const int N = 1010;
int cake[N];int main() {int n, k;// 读取小朋友的数量 n 和每个小朋友至少应分到的蛋糕重量 kcin >> n >> k;// 读取每个蛋糕的重量for (int i = 0; i < n; i++) {cin >> cake[i];}int res = 0;int sum = 0;// 遍历每个蛋糕,累加蛋糕重量for (int i = 0; i < n; i++) {sum += cake[i];// 当累加的蛋糕重量达到或超过 k 时,分配给一个小朋友if (sum >= k) {res++;sum = 0;}}// 判断最后是否还有剩余的蛋糕(即 sum 不为 0)// 如果有,说明剩余蛋糕虽不足 k,但也需分配给一个小朋友,所以小朋友数量加 1if (sum > 0) {res++;}// 输出最终能分配到蛋糕的小朋友数量cout << res;return 0;
}

BZW,解释一下:为什么最后只要sum>0就可以说明有剩余的蛋糕,因为我们在循环体里面每次当sum达到重量的时候会将他重置为0,换句话说只要循环结束之后sum没有被我置为0,那就是有重量不足k的蛋糕(不管是几个),那我直接 全部塞给最后一个倒霉蛋就好

学生排队

在这里插入图片描述

题目链接

满分题解

基本思路:其实这就是我们小学的时候 体育老师给我们调整站位的一个事情,一开始都是按学号顺序排的
如果我是学号3 我长得比学号5的同学高 体育老师让我往后走两位,
意味着 我需要出队,然后向后移动两位(后面的向前覆盖两个位置,我走到空出来的位置上去,类似数组的插入),或者说向后交换两次位置(swap函数)

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
// n 表示元素的个数,m 表示操作的次数
int n,m;int main()
{// 从标准输入读取元素的个数 n 和操作的次数 mcin >> n >> m;// 初始化数组 a,将数组元素初始化为 1 到 n 的连续整数for(int i = 1; i <= n; i++) a[i] = i;// 进行 m 次操作while( m -- ){// 定义两个变量 p 和 q,p 表示要移动的元素,q 表示移动的步数int p, q;// 从标准输入读取要移动的元素 p 和移动的步数 qcin >> p >> q;// 定义变量 k 用于记录元素 p 在数组 a 中的位置int k;// 遍历数组 a,查找元素 p 的位置for(int i = 1; i <= n; i++){if(a[i] == p){// 找到元素 p 后,记录其位置到 k 中k = i;// 找到后跳出循环,不再继续查找break;}}// 如果 q 大于 0,表示要将元素 p 向右移动 q 步if(q > 0){// 进行 q 次交换操作,将元素 p 逐步向右移动for(int i = 0; i < q; i++){// 交换当前元素和它右边相邻元素的位置swap(a[k + i], a[k + i + 1]);}}// 如果 q 小于 0,表示要将元素 p 向左移动 |q| 步else{// 将 q 取绝对值,方便后续操作q = -q;// 进行 q 次交换操作,将元素 p 逐步向左移动for(int i = 0; i < q; i++){// 交换当前元素和它左边相邻元素的位置swap(a[k - i], a[k - i - 1]);}}}// 遍历数组 a,将数组中的元素依次输出,元素之间用空格分隔for(int i = 1; i <= n; i++)cout << a[i] << " ";return 0;
}

Markdown语法

在这里插入图片描述

题目链接

最简单的样例:
在这里插入图片描述

题目解读

题目解读其实大家只要自己尝试一下CSDN的MARKDOWN编辑器就知道怎么回事了,

我们主要常用的就五类,但是这其中是可以允许嵌套的存在的

在这里插入图片描述

我给大家截个图 示例展示
下图的左边就是markdown写的文本也就是我编辑时候展示的页面 右边是呈现给大家的页面

在这里插入图片描述

满分代码

代码链接
作者:零雨、
思路参考:yxc
虽然思路是Y总课上讲的思路,看上去不难,但是这个大模拟,真正关上视频 自己独立写起来 我感觉还是需要扎实的功底和一些技巧才能AC(我还需要学习很多 很多时候没有办法写的很完善)
这里我用AI加上了注释供大家参考:

#include<bits/stdc++.h>
using namespace std;
// 用于存储从标准输入读取的一行字符串
string s;// 函数声明,分别用于处理不同类型的 Markdown 语法
void f1();
void f2();
void f3();// 函数声明,用于处理 Markdown 中的强调语法和链接语法
string pr1(string s);
string pr2(string s);// 处理 Markdown 中的强调语法(用下划线包裹的文本)
string pr1(string s) {string ans;  // 用于存储处理后的字符串for (int i = 0; s[i]; i++) {if (s[i] == '_') {// 找到下一个下划线的位置int j = i + 1;while (s[j] && s[j] != '_') j++;// 构造 HTML 中的 <em> 标签string tepp = "<em>" + s.substr(i + 1, j - i - 1) + "</em>";ans += tepp;i = j;  // 跳过已经处理的部分continue;}ans += s[i];}// 处理完强调语法后,继续处理链接语法ans = pr2(ans);return ans;
}// 处理 Markdown 中的链接语法([文本](链接))
string pr2(string s) {string ans;  // 用于存储处理后的字符串for (int i = 0; s[i]; i++) {if (s[i] == '[') {// 找到 ] 的位置int j = i + 1, cun;while (s[j] && s[j] != ']') j++;// 提取链接文本string text = s.substr(i + 1, j - i - 1);cun = j + 2;  // 跳过 ] 和 (j += 2;// 找到 ) 的位置while (s[j] != ')') j++;// 提取链接地址string link = s.substr(cun, j - cun);// 构造 HTML 中的 <a> 标签string tepp = "<a href=\"" + link + "\">" + text + "</a>";ans += tepp;i = j;  // 跳过已经处理的部分continue;}ans += s[i];}return ans;
}// 处理 Markdown 中的标题语法(以 # 开头)
void f1() {int cnt = 0;// 统计开头 # 的数量,确定标题级别while (cnt < s.size() && s[cnt] == '#') cnt++;int cun = cnt;// 跳过 # 后面的空格while (cun < s.size() && s[cun] == ' ') cun++;// 输出 HTML 标题标签,同时处理标题中的强调和链接语法cout << "<h" << cnt << '>' << pr1(s.substr(cun, s.size() - cun)) << "</h" << cnt << '>' << endl;
}// 处理 Markdown 中的无序列表语法(以 * 开头)
void f2() {cout << "<ul>" << endl;  // 输出无序列表的开始标签int tep = 1;// 跳过 * 后面的空格while (tep < s.size() && s[tep] == ' ') tep++;// 输出列表项标签,同时处理列表项中的强调和链接语法cout << "<li>" << pr1(s.substr(tep, s.size() - tep)) << "</li>" << endl;while (getline(cin, s)) {if (s == "") break;  // 遇到空行,结束无序列表if (s[0] == '#') {cout << "</ul>" << endl;  // 输出无序列表的结束标签f1();  // 处理标题语法return;}if (s[0] != '*') {cout << "</ul>" << endl;  // 输出无序列表的结束标签f3();  // 处理段落语法return;}int tep = 1;// 跳过 * 后面的空格while (tep < s.size() && s[tep] == ' ') tep++;// 输出列表项标签,同时处理列表项中的强调和链接语法cout << "<li>" << pr1(s.substr(tep, s.size() - tep)) << "</li>" << endl;}cout << "</ul>" << endl;  // 输出无序列表的结束标签
}// 处理 Markdown 中的段落语法
void f3() {cout << "<p>" << pr1(s);  // 输出段落开始标签,同时处理段落中的强调和链接语法while (getline(cin, s)) {if (s == "") {cout << "</p>" << endl;  // 遇到空行,结束段落return;} else if (s[0] == '#') {cout << "</p>" << endl;  // 输出段落结束标签f1();  // 处理标题语法return;} else if (s[0] == '*') {cout << "</p>" << endl;  // 输出段落结束标签f2();  // 处理无序列表语法return;}cout << endl << pr1(s);  // 继续输出段落内容,同时处理强调和链接语法}cout << "</p>" << endl;  // 输出段落结束标签
}int main() {while (getline(cin, s)) {if (s == "") continue;  // 跳过空行if (s[0] == '#') {f1();  // 处理标题语法} else if (s[0] == '*') {f2();  // 处理无序列表语法} else if (s[0] != '#' && s[0] != '*')f3();  // 处理段落语法}return 0;
}

结语

今天是第十次 我把这些天写的文章整理成专栏 希望能帮到大家 祝看到这里的你有美好的一天 我们下期再见!

资源链接: CCP-CSP认证专栏

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

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

相关文章

MyBatis框架操作数据库一>xml和动态Sql

目录 配置连接字符串和MyBatis:数据库的连接配置&#xff1a;XML的配置&#xff1a; XML编写Sql:model层&#xff1a;mapper层&#xff1a; 动态Sql:if 标签和trim标签&#xff1a;where标签:Set标签:Foreach标签: Mybatis的开发有两种方式&#xff1a;&#xff1a; 注解和XML&…

编写Dockerfile制作tomcat镜像,生成镜像名为tomcat:v1,并推送到私有仓库。

1.具体要求如下&#xff1a; 基于rockylinux:8基础镜像&#xff1b; 指定作者为openlab&#xff1b; 安装tomcat服务&#xff0c;暴露8080端口&#xff1b; 设置服务自启动。 总结步骤&#xff1a;基于rockylinux:8&#xff0c;安装Java环境&#xff0c;安装Tomcat&a…

医院手术麻醉信息系统是如何为医院提质增效的?

近年来&#xff0c;随着HIS系统、LIS系统、PACS系统、EMR系统等信息系统的出现&#xff0c;医疗信息化已成为医疗领域推广的重点&#xff0c;显著提高了医院业务的运营效率。手术麻醉系统作为医院信息系统的一部分&#xff0c;由两个子部分组成&#xff1a;监测设备数据采集系统…

ios打包需要的证书及步骤

官网&#xff1a;https://developer.apple.com/account 避免他人登录apple账号的方法&#xff1a;就是让他们发测试设备的udid&#xff0c;手动注册到账号下&#xff0c;然后再给他们导p12证书和描述文件 iOS App Development iOS 开发版本签名&#xff08;仅限 iOS App&#x…

C#特性和反射

1。特性概念理解&#xff1f; 特性&#xff08;Attribute&#xff09;是用于在【运行时】传递程序中各种元素&#xff08;比如类、属性、方法、结构、枚举、组件等&#xff09;行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果

操作系统-八股

进程基础&#xff1a; 进程定义&#xff1a;运行中的程序&#xff0c;有独立的内存空间和地址&#xff0c;是系统进行资源调度和分配的基本单位。 并发&#xff0c;并行 并发就是单核上面轮询&#xff0c;并行就是同时执行&#xff08;多核&#xff09;&#xff1b; 进程上下…

骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚

有粉丝一直问我骑士系统怎么编译后台和小程序目前骑士人才系统74CMS分标准版&#xff0c;创业板&#xff0c;专业版&#xff0c;其除功能不同外其配置方法完全一致有喜欢系统的也可以私信我或者找我获取 一.安装打包环境[Nodejs]这个就不用我说了吧&#xff0c;用不小于V20的版…

c语言zixue

该文主要是记录我学习中遇到的一些重点、易出问题的内容 教材p16.17 先从一个简单的例子开始吧 #include <stdio.h> //编译预处理命令 int main() //程序的主函数 {printf("To C"); //输出语句return 0; //返回语句 } #include <stdio.h>是编译预…

ollama API 本地调用

ollama API 本地调用 前提条件&#xff0c;ollama 已经启动了模型&#xff0c;查看 ollama 中的 model 名称 ollama list使用 openai 调用 from openai import OpenAI import openaiopenai.api_key ollama openai.base_url http://localhost:11434/v1/def get_completion(pro…

es6 尚硅谷 学习

1、let 1.变量不能重复声明 2.块级作用域 &#xff0c;只在块内有效 3.不存在变量提升&#xff0c;变量未声明之前不可使用 4.不影响作用域链 2、const const SCHOOL “温医”&#xff1b; 1.一定要有初始值 2.一般常量使用大写 3.常量不能赋值 4.块级作用域 5.对数组和对象…

在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别

在微信小程序或前端开发中&#xff0c;picker 和 select 都是用户交互中用于选择的组件&#xff0c;但它们在功能、设计和使用场景上有一定的区别。 1. picker 的特点 描述&#xff1a; picker 是微信小程序中的原生组件&#xff0c;通常用于选择单项或多项值&#xff0c;如时…

C#通过API接口返回流式响应内容---分块编码方式

1、背景 上一篇文章《C#通过API接口返回流式响应内容—SSE方式》阐述了通过SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服务器端推送数据到浏览器。本篇是通过分块编码的方式实现 2、效果 3、具体代码 3.1 API端实现 [HttpGet] public async Task Chu…

【SpringMVC】入门版

1.基本概念 1.1三层架构 三层架构也就是我们常说的b/s架构中的表现层&#xff0c;业务层和持久层,每层都各司其职&#xff0c;下面来分别讲解这三层的作用。 表现层&#xff1a; 也就是我们常说的web层。它负责接收客户端的请求&#xff0c;向客户端响应结果&#xff0c;通…

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动&#xff0c;经过多年建设&#xff0c;基本都已经形成了稳定的通讯要求&#xff1b;河北瑾航科技 遥测终端机&#xff0c;兼容了大部分省市的通讯协议&#xff0c;如果需要&#xff0c;可以咨询和互相学习&…

【Android】RuntimeShader 应用

1 简介 RuntimeShader 是 Android 13&#xff08;T&#xff09;中新增的特性&#xff0c;用于逐像素渲染界面&#xff0c;它使用 AGSL&#xff08;Android Graphics Shading Language&#xff09;编写着色器代码&#xff0c;底层基于 Skia 图形渲染引擎。官方介绍详见 → Runti…

ShenNiusModularity项目源码学习(16:ShenNius.Admin.Mvc项目分析-1)

ShenNius.Admin.Mvc项目是MVC模式的启动项目&#xff0c;包括了MVC模式下所需的所有的页面、控制器类、资源、js文件等数据&#xff0c;该项目仅依赖ShenNius.Admin.API项目&#xff0c;主要使用后者的ShenniusAdminApiModule模块类及一些依赖项目中定义的辅助类等。本文学习Sh…

maven wrapper的使用

写在前面 考虑这样的场景&#xff0c;张三创建了一个maven项目使用了3.9版本&#xff0c;当李四下载下来去开发配置的却是3.6版本&#xff0c;此时李四就不得不再去配置一个3.9版本的maven&#xff0c;为了解决这个问题&#xff0c;maven引入了maven wrapper的机制&#xff08…

1、操作系统引论

一、操作系统 会使用linux系统 建议大家先学会linux的基础指令&#xff0c;可以看菜鸟教程网站进行学习。 1、各种定义 操作系统定义 管理计算机的 硬件 和软件资源&#xff0c; 能对各类作业进行调度&#xff0c;方便用户使用计算机的程序集合。操作系统运行在内核态&#xf…

如何用正则表达式爬取古诗文网中的数据(python爬虫)

一、了解正则表达式的基本内容&#xff1a; 什么是正则表达式 正则表达式&#xff08;Regular Expression&#xff0c;简称 regex&#xff09;是一种用于匹配字符串的模式。它通过特定的语法规则&#xff0c;可以高效地搜索、替换和提取文本中的特定内容。正则表达式广泛应用于…