当前位置: 首页 > article >正文

第十次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认证专栏

相关文章:

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

第十次CCF-CSP认证 分蛋糕满分题解 学生排队满分题解 Markdown语法题目解读满分代码 结语 分蛋糕 题目链接 满分题解 基本思路&#xff1a;我们需要保证除了最后一个小朋友之外的所有人&#xff0c;分得的蛋糕都大于等于给定的K值&#xff0c;为什么是大于等于&#xff0c;是…...

windows 启用linux子系统不必再装双系统

搜索栏搜索:启用或关闭Windows功能,把下面3项勾选上: 若没有Hyper-V,则根据以下步骤添加: 在桌面新建一个txt文件,将下面的程序复制进去,之后修改文件后缀名为.bat 右键管理员运行即可。 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.m…...

lanqiaoOJ 1180:斐波那契数列 ← 矩阵快速幂

【题目来源】 https://www.lanqiao.cn/problems/1180/learning/ 【题目描述】 定义斐波那契数列数列为 F11&#xff0c;F21&#xff0c;FnFn-1Fn-2&#xff0c;n&#xff1e;2。 给定一个正整数 n&#xff0c;求 Fn 在模 10^97 的值。 【输入格式】 第1行为一个整数 T&#x…...

go程序运行Spaitalite踩坑记录

Spatialite参考资料&#xff1a;8.1. 开源地理空间数据库 — Python与开源GIS Ubuntu安装SpaitaLite&#xff1a; apt-get install libspatialite7 libsqlite3-mod-spatialite apt-get install spatialite-bin 命令行打开数据库&#xff1a;spatialite xxx.db 执行一个空间函…...

【react】react中的<></>和React Fragment的用法及区别详解

目录 1、<>是什么 2、为什么要使用<>&#xff1f; 3、如何使用<>&#xff1f; 基本用法 需要传递属性时&#xff08;如key&#xff09; 使用效果 注意事项 总结 4、React Fragment 与空标签&#xff08;<>&#xff09;详解 1. Fragment 的用…...

Everything搜索工具下载使用教程(附安装包),everything搜索工具文件快速查找

文章目录 前言一、Everything搜索工具下载二、Everything搜索工具下载使用教程 前言 Everything搜索工具能凭借文件名实时精准定位文件&#xff0c;接下来的教程&#xff0c;将详细为你呈现 Everything搜索工具的下载及使用方法&#xff0c;助你开启高效文件搜索的便捷之旅 。…...

LeetCode 解题思路 17(Hot 100)

解题思路&#xff1a; 找到链表中点&#xff1a; 使用快慢指针法&#xff0c;快指针每次移动两步&#xff0c;慢指针每次移动一步。当快指针到达末尾时&#xff0c;慢指针指向中点。递归分割与排序&#xff1a; 将链表从中点处分割为左右两个子链表&#xff0c;分别对这两个子…...

Qt程序基于共享内存读写CodeSys的变量

文章目录 1.背景2.结构体从CodeSys导出后导入到C2.1.将结构体从CodeSys中导出2.2.将结构体从m4文件提取翻译成c格式 3.添加RTTR注册信息4.读取PLC变量值5.更改PLC变量值 1.背景 在文章【基于RTTR在C中实现结构体数据的多层级动态读写】中&#xff0c;我们实现了通过字符串读写…...

7-12 关于堆的判断

输入样例&#xff1a; 5 4 46 23 26 24 10 24 is the root 26 and 23 are siblings 46 is the parent of 23 23 is a child of 10输出样例&#xff1a; F T F T 这题是建最小堆&#xff0c;数据结构牛老师讲过这个知识点&#xff0c;但是我给忘了&#xff0c;补题搜了一下才解…...

《SQL编程思想》中的 MySQL 建表语句和测试数据

《SQL编程思想》中的 MySQL 建表语句 建表语句 -- 创建 4 个示例表和索引 CREATE TABLE department( dept_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 部门编号&#xff0c;自增主键, dept_name VARCHAR(50) NOT NULL COMMENT 部门名称) ENGINEInnoDB COMM…...

STL标准库

感谢哔哩哔哩UP“开发者LaoJ”&#xff0c;以下是学习记录~ 一、容器 1.1、vector 底层实现是动态数组&#xff0c;向尾部插入数据很方便&#xff0c;但是向中间和头部插入数据需要移动其它元素 可以实现随机访问 如果插入时&#xff0c;当前vector容纳不下&#xff0c;会…...

STM32 HAL库实战:高效整合DMA与ADC开发指南

STM32 HAL库实战&#xff1a;高效整合DMA与ADC开发指南 一、DMA与ADC基础介绍 1. DMA&#xff1a;解放CPU的“数据搬运工” DMA&#xff08;Direct Memory Access&#xff09; 是STM32中用于在外设与内存之间直接传输数据的硬件模块。其核心优势在于无需CPU干预&#xff0c;…...

什么是机器学习?从零基础到自动驾驶案例全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-4 uboot目录分析

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …...

Unity开发——点击事件/射线检测

一、IPointerClickHandler接口 通过为 UI 元素添加自定义脚本&#xff0c;实现IPointerClickHandle接口&#xff0c;在点击事件发生时进行处理。 这种方式适用于对特定 UI 元素的点击检测。 using UnityEngine; using UnityEngine.EventSystems;public class UIClickHandler…...

【零基础入门unity游戏开发——unity3D篇】3D物理系统之 —— 3D刚体组件Rigidbody

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

微信小程序接入DeepSeek模型(火山方舟),并在视图中流式输出

引言&#xff1a; DeepSeek&#xff0c;作为一款先进的自然语言处理模型&#xff0c;以其强大的文本理解和生成能力著称。它能够处理复杂的文本信息&#xff0c;进行深度推理&#xff0c;并快速给出准确的回应。DeepSeek模型支持流式处理&#xff0c;这意味着它可以边计算边输…...

55年免费用!RevoUninstaller Pro专业版限时领取

今天&#xff0c;我要给大家介绍一款超给力的卸载工具——RevoUninstaller Pro。这是一款由保加利亚团队精心打造的专业级卸载软件&#xff0c;堪称软件卸载界的“神器”。 RevoUninstaller分为免费版和专业版。专业版功能更为强大&#xff0c;但通常需要付费才能解锁全部功能。…...

Markdig:强大的 .NET Markdown 解析器详解

在现代开发中&#xff0c;Markdown 已经成为了一种广泛使用的轻量级标记语言&#xff0c;特别是在文档、博客和内容管理系统中&#xff0c;Markdown 为开发者提供了快速、简洁的格式化文本方式。而在 .NET 生态中&#xff0c;Markdig 是一款非常强大的 Markdown 解析器&#xf…...

基于ensp的IP企业网络规划

基于ensp的IP企业网络规划 前言网络拓扑设计功能设计技术详解一、网络设备基础配置二、虚拟局域网&#xff08;VLAN&#xff09;与广播域划分三、冗余协议与链路故障检测四、IP地址自动分配与DHCP相关配置五、动态路由与安全认证六、广域网互联及VPN实现七、网络地址转换&#…...

谷歌Chrome或微软Edge浏览器修改网页任意内容

在谷歌或微软浏览器按F12&#xff0c;打开开发者工具&#xff0c;切换到console选项卡&#xff1a; 在下面的输入行输入下面的命令回车&#xff1a; document.body.contentEditable"true"效果如下&#xff1a;...

初探大模型开发:使用 LangChain 和 DeepSeek 构建简单 Demo

最近&#xff0c;我开始接触大模型开发&#xff0c;并尝试使用 LangChain 和 DeepSeek 构建了一个简单的 Demo。通过这个 Demo&#xff0c;我不仅加深了对大模型的理解&#xff0c;还体验到了 LangChain 和 DeepSeek 的强大功能。下面&#xff0c;我将分享我的开发过程以及一些…...

【Linux】进程(1)进程概念和进程状态

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、什么是进程 二、task_struct的内容 三、Linux下进程基本操作 四、父进程和子进程 1. 用fork函数创建子进程 五、进程状态 1. 三种重…...

关闭win11根据内容自动调整屏幕亮度

在win11笔记本上使用编程软件的时候&#xff0c;用的是深色背景&#xff0c;但是屏幕会慢慢变暗&#xff1b;等切换回明亮的桌面时&#xff0c;又会慢慢变亮&#xff0c;带来不适应的感觉。这个博客记录一下解决这个问题的办法 ps&#xff1a;有些人修改的是电源选项&#xff…...

2021-05-23 C++百元百鸡

此是草稿&#xff0c;有值得优化的地方&#xff0c;如从公鸡先循环再母鸡再小鸡这样可以提高效率&#xff0c;且有输出后也可优化为公鸡母鸡小鸡初始化。 void 百元百鸡() {//缘由https://ask.csdn.net/questions/7434093?spm1005.2025.3001.5141int xj 1, mj 1, gj 1, y …...

理解langchain langgraph 官方文档示例代码中的MemorySaver

以下是langchain v0.3官方示例代码 from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import START, MessagesState, StateGraph# 可以理解为&#xff1a;定义一个流程&#xff0c;这个流程中用到的数据类型是Messages。 <---定义一个有向图&…...

C# 建造者模式(Builder Pattern)详细讲解

一、什么是建造者模式&#xff1f; 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过将一个复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这个模式主要应用于那些构建过程复杂且涉及多个步骤的…...

Android自动化测试工具

细解自动化测试工具 Airtest-CSDN博客 以下是几种常见的Android应用自动化测试工具&#xff1a; Appium&#xff1a;支持多种编程语言&#xff0c;如Java、Python、Ruby、JavaScript等。可以用于Web应用程序和原生应用程序的自动化测试&#xff0c;并支持iOS和Android平台。E…...

【蓝桥杯】24省赛:数字串个数

思路 本质是组合数学问题&#xff1a; 9个数字组成10000位数字有9**10000可能 不包括3的可能8**10000 不包括7的可能8**10000 既不包括3也不包括77**10000 根据容斥原理&#xff1a;结果为 9 ∗ ∗ 10000 − 8 ∗ ∗ 10000 − 8 ∗ ∗ 10000 7 ∗ ∗ 10000 9**10000 - 8**10…...

SpringBoot中使用kaptcha生成验证码

简介 kaptcha是谷歌开源的简单实用的验证码生成工具。通过设置参数&#xff0c;可以自定义验证码大小、颜色、显示的字符等等。 Maven引入依赖 <!-- https://mvnrepository.com/artifact/pro.fessional/kaptcha --><dependency><groupId>pro.fessional<…...