
CCF CSP题解
CCF CSP历年满分题解(C++版)
sdudyl
这个作者很懒,什么都没留下…
展开
-
CCFCSP201412-2Z字形扫描(C++100分)
CCFCSP201412-2Z字形扫描(C++100分)问题描述在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9eBaQND-1615948058893)(http://118.190.20.162/RequireFile.do?fid=Nad2EgMG)] 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 6 9原创 2021-03-17 10:28:06 · 323 阅读 · 0 评论 -
CCF CSP认证历年第一题满分题解(C++版)
CCF CSP认证历年第一题题解(C++)202012-1 期末预测之安全指数202009-1 称检测点查询202006-1 线性分类器201912-1 报数201909-1 小明种苹果201903-1 小中大201809-1 卖菜201803-1 跳一跳201712-1 最小差值201709-1 打酱油201703-1 分蛋糕201612-1 中间数201609-1 最大波动201604-1 折点计数201512-1 数位之和201509-1 数列分段201503-1 图原创 2021-03-09 15:08:49 · 1096 阅读 · 0 评论 -
CSP202012-1期末预测之安全指数(C++100分)
CSP202012-1期末预测之安全指数(C++100分)题目背景期末要到了,小菜同学找到了自己的好朋友顿顿,希望可以预测一下自己这学期是否会挂科。题目描述首先,顿顿选取了如“课堂表现”、“自习时长”、“作业得分”、“社团活动参与度”等 n 项指标作为预测的依据。然后,顿顿根据自己平日里对小菜的暗中观察,以百分制给每一项指标打分,即小菜同学第 i(1≤i≤n)项指标的得分 scorei 是一个 [0,100] 范围内的整数。鉴于每一项指标的重要性不尽相同,顿顿用一个 [−10,10] 范围内的整原创 2021-03-06 23:11:31 · 981 阅读 · 0 评论 -
CSP202009-1称检测点查询(C++100分)
CSP202009-1称检测点查询(C++100分)题目背景2020 年 6 月 8 日,国务院联防联控机制发布《关于加快推进新冠病毒核酸检测的实施意见》,提出对“密切接触者”等八类重点人群“应检尽检”,其他人群“愿检尽检”。问题描述某市设有 n 个核酸检测点,编号从 1 到 n,其中 i 号检测点的位置可以表示为一个平面整数坐标 (xi,yi)。为方便预约核酸检测,请根据市民所在位置 (X,Y),查询距其最近的三个检测点。多个检测点距离相同时,编号较小的视为更近。输入格式输入共 n+1 行原创 2021-03-06 23:09:11 · 1070 阅读 · 0 评论 -
CSP202006-1线性分类器(C++100分)
CSP202006-1线性分类器(C++100分)思路采用结构体point来保存每个点的坐标x,y以及类别tag。数组res保存每条直线是否可以完美分割。struct point{ int x; int y; string tag;};判断一条直线是否可以完美分割时,首先用start保存第一个点的正负:start = Z + X * p[0].x + Y * p[0].y;然后以此为标准判断之后的每一个点是否满足条件。之后的每个点带入到直线中的正负用mid来表示。mid =原创 2021-03-06 23:05:32 · 687 阅读 · 0 评论 -
CSP201912-1报数(C++100分)
CSP201912-1报数(C++100分)思路采用循环数组来保存甲乙丙丁四人跳过的次数,a[0]为甲…a[3]为丁。报的数为tag,则(tag - 1) % 4为报此数同学当前编号。每当输入一个数tag,首先判断tag是否是7的倍数,如果是,则报此数的同学跳过次数加一,并退出本次循环。 if (tag % 7 == 0) { a[(tag - 1) % 4]++; continue; }tag如果不是7的倍数,也有可能含有7,因此接下来需要判断tag是否含有7。判断tag是否含原创 2021-03-04 18:01:17 · 472 阅读 · 1 评论 -
CSP201909-1小明种苹果(C++100分)
CSP201909-1小明种苹果(C++100分)思路本题较为简单,总的果数sum即为第二行到最后一行所有数字之和,因此每输入一个数字tag,就加到sum上即可。sum = sum + tag;用数组a[ ]来保存每棵树的蔬果数,注意在统计蔬果数时要将蔬果数tag的负数加到a[i]中,因为tag此时是负数。a[i] = a[i] - tag;完整代码//by sdudyl#include<iostream>using namespace std;int a[1001]原创 2021-03-04 17:12:11 · 348 阅读 · 1 评论 -
CSP201809-1卖菜(C++100分)
CSP201809-1卖菜(C++100分)问题描述在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。 注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。 给定原创 2021-03-04 15:37:27 · 261 阅读 · 1 评论 -
CSP201803-1跳一跳(C++100分)
CSP201803-1跳一跳(C++100分)问题描述近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的原创 2021-03-04 15:26:45 · 396 阅读 · 1 评论 -
CSP201703-1分蛋糕(C++100分)
CSP201703-1分蛋糕(C++100分)问题描述小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k。 请问当小明的蛋糕分完时,总共有多少个朋友分到了蛋糕。输入格式输入的第一行包含原创 2021-03-04 09:51:35 · 998 阅读 · 1 评论 -
CSP201612-1中间数(C++100分)
CSP201612-1中间数(C++100分)问题描述在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式输入的第一行包含了一个整数n,表示整数序列中数的个数。第二行包含n个正整数,依次表示a1, a2, …, an。输出格式如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。原创 2021-03-04 00:15:50 · 418 阅读 · 1 评论 -
CSP201609-1最大波动(C++100分)
CSP201609-1最大波动(C++100分)问题描述小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。输入格式输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。第二行包含n个正整数,依次表示每天的收盘价格。输出格式输出一个整数,表示这只股票这n天中的最大波动值。样例输入62 5 5 7 3 5样例输出4样例说明第四天和第五天之间的原创 2021-03-04 00:03:17 · 382 阅读 · 1 评论 -
CSP201604-1折点计数(C++100分)
CSP201604-1折点计数(C++100分)问题描述给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。其他的天都不是折点。如下图中,第3天和第6天是折点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xlIel3Xz-1614786444298)(http://118.190.20.162/RequireFile.do?fid=gbLRbhR7)]原创 2021-03-03 23:47:54 · 199 阅读 · 1 评论 -
CSP201512-1数位之和(C++100分)
CSP201512-1数位之和(C++100分)问题描述给定一个十进制整数n,输出n的各位数字之和。输入格式输入一个整数n。输出格式输出一个整数,表示答案。样例输入20151220样例输出13样例说明20151220的各位数字之和为2+0+1+5+1+2+2+0=13。评测用例规模与约定所有评测用例满足:0 ≤ n ≤ 1000000000。思路对于取位数的题目常用的操作为取模取余。输入数字n,通过n%10取其末尾加到sum上,再将其末尾舍掉(n/10即可),由于测试案例最大原创 2021-03-03 23:34:10 · 446 阅读 · 1 评论 -
CSP201509-1数列分段(C++100分)
CSP201509-1数列分段(C++100分)问题描述给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入格式输入的第一行包含一个整数n,表示数列中整数的个数。第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。输出格式输出一个整数,表示给定的数列有多个段。样例输入88 8 8 0 12 12 8 0样例输出5样例说明8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五原创 2021-03-03 23:23:57 · 689 阅读 · 1 评论 -
CSP201503-1图像旋转(C++100分)
CSP201503-1图像旋转(C++100分)问题描述旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。接下来n行每行包含m个整数,表示输入的图像。输出格式输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。样例输入2 31 5 33 2 4样例输出3 45 21 3评测用例规模原创 2021-03-03 23:05:43 · 2416 阅读 · 7 评论 -
CSP201412-1门禁系统(C++100分)
CSP201412-1门禁系统(C++100分)问题描述涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式输入的第一行包含一个整数n,表示涛涛的记录条数。第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。输出格式输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。样例输入51 2 1 1 3样例输出1 1 2 3 1评测用例规模原创 2021-03-03 22:29:26 · 356 阅读 · 1 评论 -
CSP201409-1 相邻数对(C++ 100分)
CSP201409-1 相邻数对(C++ 100分)问题描述给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。输入格式输入的第一行包含一个整数n,表示给定整数的个数。第二行包含所给定的n个整数。输出格式输出一个整数,表示值正好相差1的数对的个数。样例输入610 2 6 3 7 8样例输出3样例说明值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。评测用例规模与约定1<=n<=1000,给定的整数为不超过10000的非负整数。思路原创 2021-03-03 22:11:29 · 512 阅读 · 1 评论