![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ccf历年真题
一只可爱的小猴子
即使再小的帆也能远航,无论什么时候都要保持自信
展开
-
202209-3 CCF 防疫大数据 满分题解(超详细讲解 + 注释代码) + 解题思路(STL模拟)
在判断该用户是否是风险人群时,需要判断[d1, d]区间内地点r是否是风险地区,所以需要把地点r的风险起始终止时间存储下来,可以采用map结合pair。如果之前r不是风险地区或者d - 1天时已经不是风险地区,那么需要将r的风险起始时间更新为d,否则不更新。在d天确认地点r为风险地区,那么目前r的风险终止时间一定会被更新成d + 6(未来7天内)有了地区的风险时间段之后,就可以根据题目给出的条件判断这个用户是否是风险人群就可以了。首先得到风险地区后,先更新每一个地区的风险时间段。当天就得出当天的风险人群。原创 2023-03-22 16:32:24 · 1027 阅读 · 0 评论 -
202212-3 CCF JPEG 解码 满分题解(超详细注释代码) + 两种解题思路(z字形模拟 / 打表法)
解题思路用图表示,清晰易懂。原创 2023-03-16 20:52:57 · 983 阅读 · 3 评论 -
202109-3 CCF 脉冲神经网络 66分题解 + 解题思路 + 解题过程
根据题意,脉冲源的阈值大于随机数时,会向其所有出点发送脉冲神经元当v>=30时,会向其所有出点发送脉冲,ne;//存储神经元/脉冲源的所有出点集合vector所有脉冲会有一定的延迟,所以使用uI;//存储神经元i的j时刻收到的所有脉冲和暴力做法就是遍历每一时刻,每一时刻更新神经元和脉冲源,最后统计答案。原创 2023-03-11 11:37:16 · 668 阅读 · 0 评论 -
ccf-csp历年满分题解 + 考点汇总 + 经验总结 + 常用代码模板(已完成63题,持续更新中...)
3. 当题目中没有过多的说明某个操作或数据可能出现的情况,但确实可能会出现递归处理等情况,可以先不考虑递归的情况,后续实在没有其他错误的时候,再来修改这个操作的处理情况(比如说,这道题目中,cancel这个记录有没有可能操作的是一条cancel记录,出现递归的情况,但是。1. 有的时候不要把题目想的太难了,我记得很久之前做这道题目的时候写的很复杂,其实想清楚整个过程或者想一个简单点的思路,好像并没有那么难啊,也不知道当时是怎么想的,总之,2. memcpy(dist, src, sizeof(src));原创 2023-03-07 21:49:20 · 4598 阅读 · 6 评论 -
201809-3 CCF 元素选择器 满分题解(超详细注释代码) + 解题思路(超详细)
,并且如果路径中的该行中有元素与查询的最后一个元素匹配(这个匹配需要map来记录每一行有哪些元素,对应的数据结构可以是。当以D结尾的路径遍历完时,并且查询中的元素也为空,则说明这条路径能够满足查询,则将这个答案保存下来。至于p数组中的值,就是利用一个数组记录每一行之前最近的起始行就可以得到,具体可见代码,不难理解。对于每一条以D结尾的路径,从D开始回溯,每次回溯到当前行的父亲行(这里需要一个。显然第一种查询需要存储每一种元素在内容中所有出现的行,对应的数据结构可以是。原创 2023-03-07 21:11:10 · 587 阅读 · 0 评论 -
201612-3 CCF 权限查询 满分题解(详细注释 + 逻辑清晰)+ 解题思路 : STL大模拟
/存储所有角色包含的所有权限(所含权限的最大等级值)unordered_map u;//存储所有用户包含的所有权限(所含权限的最大等级值)//存储所有权限集合(包括有等级权限和有等级权限)根据读入将权限(对应的等级)、角色(对应的权限)、用户(对应的权限)进行存储。再根据存储的集合进行权限查询。原创 2023-02-28 16:50:44 · 195 阅读 · 0 评论 -
CCF 炉石传说 满分代码(详细注释) + 解题思路 (结构体模拟) 201609-3
attack操作,将双方生命减去对方的攻击值,如果死了并且不是英雄的话,将后面的随从往前移动一位。sommon操作,将pos位置后面的人右移,然后将新随从插入到pos位置。p[0,0]存储先手英雄,p[0,1~7]存储先手的随从。p[1,0]存储先手英雄,p[1,1~7]存储先手的随从。读入n个操作,执行这n个操作,最后输出所有人员的生命信息。如果是end操作,交换双方操作对象(r =!用一个结构体二维数组存储所有人员信息。将每个人用结构体存储生命和攻击力。原创 2023-02-24 21:34:59 · 355 阅读 · 0 评论 -
CCF 中间数(满分代码 + 解题思路 :哈希) 201612-1
大于a[i]的数的个数可以通过总数 – 小于a[i]的个数 – a[i]的个数来计算。如果a[i]的个数相等,则a[i]就为中位数。从小到大排序,每次遍历到的数都是数组中第一次出现该数值的位置。首先统计数组中每一个数值出现的个数(用map)小于a[i]的数的个数为i - 1。原创 2023-02-21 22:22:57 · 228 阅读 · 0 评论 -
CCF 最大波动(满分代码 + 解题思路 :暴力模拟) 201609-1
将a[i]与a[i- 1]的差值的绝对值求max得到最终答案。从第二个数开始遍历,一直遍历到最后一个数。求相邻两个数的差数的绝对值。原创 2023-02-21 21:55:14 · 201 阅读 · 0 评论 -
CCF 折点计数(满分代码 + 解题思路 :找规律暴力模拟) 201604-1
当a[i] > a[i - 1] && a[i] > a[i + 1]时,该点为较高点,答案+ 1。当a[i] < a[i - 1] && a[i] < a[i + 1]时,该点为较低点,答案+ 1。折点就是较高点或较低点。原创 2023-02-21 21:44:50 · 207 阅读 · 0 评论 -
201403-4 CCF 无线网络(满分代码 + 解题思路 + bfs + dp)
最后答案,需要dist【2】【0~k】取min,因为不知道最短路新增了多少个点,并且最终答案要减一(因为计算的是1到2之间的点,不包括点2)问题可以转换为在n + m个点中,最多选取k个新点,从1 到 2 的最短路。使用队列存储当层节点,依次扩展下一个节点,并更新dist数组。首先可以双重循环遍历所有的点,计算。原创 2023-02-19 20:18:04 · 477 阅读 · 0 评论 -
202209-1 CCF 如此编码(满分代码 + 解题思路)
再计算 c[i - 1] ×b[i] (根据公式可以知道 (m % c[i]) - (m % c[i - 1]) = c[i - 1] ×b[i]再求出计算m % ci (根据公式可知需要这一步)首先求出c数组 (前缀乘)根据题目意思是求解b数组。再计算计算 b[i]原创 2023-02-10 11:49:33 · 696 阅读 · 0 评论 -
202209-2 CCF 何以包邮? (01背包解法(两种解法) + 详细思路)
求所有选法集合中的价格最小值即是答案。整个问题也可以看作是01背包问题。书本的总价格>=x并且 最小。整个问题就是01背包问题。将问题转换为01背包模型。原创 2023-02-10 10:53:04 · 3226 阅读 · 0 评论 -
202206-3 CCF 角色授权 (运用stl容器模拟 + 优化 满分题解)
用于将角色名称与结构体下标进行匹配,这样通过角色的名称就可以快速的找到对应的角色结构体。的话,真的不是特别难,简单的模拟就可以得70+,再小优化一下,就可以拿满分。判断一个用户能否执行某个操作的过程,首先需要将这个人所关联的角色找出来。再根据题目中判断的依据,一步一步模拟就可以了(不是很难,详情见代码)然后给你一个人,以及需要进行的操作,问你这个人能不能执行这个操作。,还没理清楚,就开始写,逻辑上会有很多漏洞,难以调试。判断一个角色是否有xx操作,xx资源种类,xx资源。角色有名字,操作,资源等等。原创 2022-09-15 18:07:49 · 1739 阅读 · 4 评论 -
202203-3 CCF 计算资源调度器 (运用stl容器模拟 满分题解)
所以可以建立一个unordered_map>,记录每个编号的计算任务在哪些计算节点上。所以可以建立unordered_map 记录每个节点有几个计算任务。,我一开始没有想的很清楚,就开始写,写出来的代码很长很臭,调试特别慢。计算任务反亲和性要求不能和指定应用的计算任务在同一个计算节点。将所有满足要求的节点存储下来,选择最优节点作为计算节点。筛选时需要选择此时运行计算任务数量最少的计算节点。的话,真的不是特别难,只是简单的模拟就能实现。原创 2022-09-15 09:30:19 · 1380 阅读 · 1 评论 -
202112-2 CCF 序列查询新解 (枚举 + 分段讨论 满分题解)
所以我们可以在f(x)相等的这一段内,再根据g(x)相等进行划分段,这样划分出来的段,求和做差 == abs(f(x) - g(x))在f(x)相等的这一段内,再根据g(x)相等进行划分段,可能存在长度不等于r的段(首尾会出现),所以要计算这个段还剩几个。又由于f(x)相等的这一段内,g(x)有可能既有比f(x)小,又有比f(x)大的情况,所以直接累加求差是不可取的。再看g(x)这个函数,g(x)= x / 常数,也可以知道,g(x)也是单调递增的。计算出还剩多少个时,要判断是否超出f(x)的长度范围。原创 2022-09-08 18:36:19 · 1125 阅读 · 0 评论 -
202112-1 CCF 序列查询 (简单模拟 满分题解)
就是一个简单的模拟,仔细读一遍题目,看一下是在要求干什么。然后乘起来,加起来,就可以了,具体看代码,比较简单易懂。根据数组的每一个值进行分段,每一个段的值就是数组下标。原创 2022-09-05 16:43:13 · 849 阅读 · 0 评论 -
202206-2 CCF 寻宝!大冒险! (简单模拟 满分题解)
小地图为0的点的相对坐标不能出现在存储的vector中,当然小地图为1时,一定要在vector中能找到与之想对应的点,否则,匹配不成功。最先输入的是 B[S][0]⋯B[S][S] 一行,B[0][0]⋯B[0][S] 一行最后输入。第一个,题目中说小地图的左下角一定是1,并且查找有多少个坐标符合这个1。第二个注意的点,题目中给出了小地图的坐标排布。如何判断小地图上的点与大地图上的一一匹配?乍一看以为是数学坐标系,但其实并不是,只是。就是在大地图上寻找与小地图匹配的次数。由于大地图的数据范围很大,所以。原创 2022-09-03 09:44:59 · 5189 阅读 · 8 评论 -
202206-1 CCF 归一化处理 (简单模拟 满分题解)
根据题目内容,先对数组进行求和,然后根据公式再计算平均值,方差,标准差,然后根据公式计算f(n)进行输出即可,注意浮点数的输出。原创 2022-09-01 10:35:12 · 1230 阅读 · 2 评论 -
201912-3 CCF 化学方程式 (满分题解)
然后将后面那一串进行递归处理(因为可能会出现括号嵌套)对于单独一边的表达式,又可以根据加号进行分割成各项。那么就对左右两边表达式分别处理,存储在map中,将每一项处理后的map进行合并成一个总的map。判断化学方程式两边元素种类以及个数是否相等。map可以直接用==进行比较是否相等。首先先剥离出前面的数字系数。,出现TLE仔细查看逻辑。...原创 2022-08-25 20:11:41 · 612 阅读 · 0 评论 -
201709-3 CCF-CSP JSON查询 满分题解(两种代码解法)+ 解题思路
相当于指针跟着函数的操作移动,不需要再额外增加形参记录当前指针位置。,原来的下一个字符会变成当前这个字符,处理的时候要考虑到这个问题。,会出错(该结构体的嵌套结构体赋给该结构体时。采用结构体嵌套map的方式存储(可以看代码,结构比较清晰)首先将整个对象存储下来,然后根据每个查询进行输出结果。对于多个函数操作一个字符串,可以将指针。这种需要嵌套定义并且类型不一时,可以。会多次用到的部分,使用函数来表示。难点在于存储对象,以及解析对象。使用未定义函数需要申明,...原创 2022-07-31 11:47:04 · 442 阅读 · 0 评论 -
201712-3 CCF Crontab 满分题解(详细代码注释) + 解题思路
存储该任务能执行的时间,当minute,hour,day,month,week都满足时,将时间和命令输出。那么如果时间允许的话,可以直接把时间枚举一遍,每个时间判断一下该任务能否执行即可。其实时间1970010100,结束时间209912312359。算下来是六千万多分钟,10s时间足够,因此暴力枚举。,模拟时间的递增,并且能将时间进行格式化输出。题目意思就是输出每一时刻能被执行的命令。应记住,可以看作是一个模板。...原创 2022-07-30 21:06:06 · 426 阅读 · 0 评论 -
201803-3 CCF URL映射 满分题解
规则的路径和名字用空格间隔,则可以通过cin分别读取和存储。对字符串的类型进行判断str/int/path/常量。匹配的实现,可以采用双指针,以/为分隔,取出字符串。将答案存储在vector中。匹配过程中,出现不匹配则清空vector,返回。,若匹配成功,则输出答案,否则404。再将url每一条读入并解析。...原创 2022-07-24 21:52:49 · 444 阅读 · 0 评论 -
201703-3 CCF markdown 满分题解(详细代码注释) + 解题思路
在根据区块间的空行进行将区块分割存储在vector >中,其中每个vector元素是一个区块,vector < string >的每个元素是该区块中的每一行内容。强调和链接,二者写成两个函数单独处理,只需要遍历一遍一行的文本,发现有强调或链接的内容,将markdown格式换成html格式即可(另外用一个string来存储变化后的串,详见代码实现,不难)并遍历区块中的每一行内容,对每一行内容进行强调和链接的处理,再进行输出。遍历每一个区块,根据区块的类型输出相应格式。原创 2022-07-10 23:41:25 · 409 阅读 · 0 评论 -
CCF 出行计划(满分代码 + 解题思路)2022-03-2
解题思路题意就是给你一个做核酸的时间,计算能出行的计划个数有n个计划,m个时间询问,如果暴力求解,对于每一个询问时间,遍历每一个计划看能否出行,则时间复杂度是10亿,会超时,只能拿70分然后我的解题思路是利用差分,首先对于每一个计划,计算应在哪个时间段内做核酸使得该计划能成功通行,让该时间段上的通行数都加一所以我们需要开辟一个数组来记录每个时间能通行的数量当遍历完所有通行计划后,对差分数组进行还原成原始数组就可以利用数组下标直接得到询问的结果代码实现#include <io..原创 2022-04-04 12:42:16 · 5188 阅读 · 9 评论 -
CCF 未初始化警告(满分代码 + 解题思路)2022-03-1
解题思路题目统计使用未初始化变量的语句数,那么只需要依次判断每一句的右值变量是否已经初始化所以可以开辟一个数组进行标记该变量是否已经初始化依次读入每一句赋值语句,判断右值是否初始化,并令左值标记已初始化即可代码实现#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int N = 1000..原创 2022-04-03 15:43:48 · 3123 阅读 · 0 评论 -
ccf-csp历年满分题解 + 考点汇总 + 经验总结 + 常用代码模板(已完成63题,持续更新中...)
3. 当题目中没有过多的说明某个操作或数据可能出现的情况,但确实可能会出现递归处理等情况,可以先不考虑递归的情况,后续实在没有其他错误的时候,再来修改这个操作的处理情况(比如说,这道题目中,cancel这个记录有没有可能操作的是一条cancel记录,出现递归的情况,但是。//右对齐,字符宽度为m,如果要输出的字符宽度>=m,则全部输出,如果字符宽度原创 2022-03-19 18:55:03 · 7552 阅读 · 2 评论 -
CCF线性分类器(满分代码 + 解题思路 + 技巧总结) 202006 - 1
技巧总结局部变量千万千万要记得初始化初始化,保险起见,设全局变量也行题目描述解题思路题意给出n个点,点分为AB两种类型,并给出m条直线,对于每一条直线输出不同类型的点是否被线分隔在两侧首先判断如何用线分隔点,根据数学知识可知 ax + by + c = 0 说明x,y在线上,大于零和小于零分别表示x,y在线的两侧然后判断两侧是否都是相同类型点,遍历所有点后,若同一侧出现了两个类型的点,则输出No时间复杂度m*n,不会超时代码实现#include <iostream>原创 2022-03-12 11:38:56 · 766 阅读 · 0 评论 -
CCF小明放学(满分代码 + 解题思路 + 技巧总结) 201812-2
技巧总结有的题目直接按照题意模拟很繁琐,有时候解题可以像解数学题目一样,数形结合,画个图总结一下变化规律,再根据规律实现代码要容易的多(题目很繁琐的时候,再向前推导一步)解题思路k = 0,t表示行驶路程的时间,直接累加k = 1;t表示人在起点时,该红灯剩余的时间k = 2;t表示人在起点时,该黄灯剩余的时间k = 3;t表示人在起点时,该绿灯剩余的时间可以画一个坐标图模拟过时间cnt后灯的颜色,从而计算还需等待多久代码实现#include <iostream>原创 2022-03-10 14:50:09 · 772 阅读 · 2 评论 -
CCF 非零段划分(满分代码 + 解题思路 + 技巧总结) 202109-2
技巧总结解题思路将题目中给出的数画一个曲线图,题目的意思就是在曲线图上水平切一刀,水平线上面的部分最多能被分成几部分代码实现#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 500010;int a[N], cnt[N]; //a记录每座山峰的高度,cnt记录高度为i的山峰对答案的贡献int n;int原创 2022-03-09 19:24:01 · 743 阅读 · 2 评论 -
CCF 小明上学(满分代码 + 解题思路)201812-1
解题思路题目的意思就是计算一下上学路上总共需要花费的时间k = 0,表示经过一段路花费时间t,直接累加tk = 1, 表示红灯,加上等待时间t,变绿灯后可通行k = 2,表示黄灯,加上黄灯等待t时间后,还需加上红灯等待时间r,变绿灯后可通行k = 3,绿灯可直接通过,无需等待t代码实现#include <iostream>#include <cstring>#include <algorithm>using namespace std;in..原创 2022-03-08 21:23:13 · 421 阅读 · 0 评论 -
CCF 数组推导(满分代码 + 解题思路)202109-1
题目描述解题思路b数组是记录a数组前i个位置的最大值,所以bi一定大于等于ai所以将b数组累加起来,就是a数组所能取到的最大值假设b数组中同时出现了两个8,则表示第二个8的位置,原来a数组所对应的值肯定<=8, 不然b数组中的值肯定不为8那么a数组这个位置的数是多大?都可以,只要<= 8,那么最小取零,就能做到a数组取到最小值所以总结来说,在b[i - 1]与b[i]相同时,b[i]当作0看待,此时a数组取到最小值代码实现#include <iostream>原创 2022-03-07 21:59:36 · 500 阅读 · 0 评论 -
CCF 路径解析 满分代码(两种解法) + 解题思路 + 技巧总结 201604-3
(代码实现1是用workmore函数对读入的串先进行去除多余/,在workpoint函数里边将字符串根据/进行划分,边处理./…(代码实现2是在get函数里边将字符串根据/进行划分,边处理多余/问题, 用order函数处理./…'表示返回上一级,则将存储路径的vector数组进行popback()或者stack的pop(),需要在遍历时加上初始的当前目录,以便返回上一级。将不规范的路径规范化,就是需要使路径。'.'表示当前目录,则不处理,跳过。,就是根据给出的文件路径处理。最后将保存的路径输出就是答案。原创 2022-03-07 21:15:27 · 713 阅读 · 0 评论 -
CCF 碰撞的小球(满分代码 + 解题思路)201803-2
题目描述解题思路题意就是一群小球在线段上运动,给出球的初始位置和运动方向,问在t时间后小球的位置小球只会有两种行为,一种是移动,一种是反向当与别的小球碰撞时,会反向,所以要判断两个小球是否会碰撞判断两个小球是否会碰撞,那么就要知道此时刻小球所在的位置,所以可以根据时间来依次移动小球每一秒,移动过后,判断该小球是否与前面已经移动过的小球相撞,若是,两球反向还需注意,移动过程中,超出线段范围需要反向代码实现#include <iostream>#include <cs原创 2022-03-06 16:55:46 · 484 阅读 · 0 评论 -
CCF 模板生成系统 满分代码(2种写法) + 解题思路 + 技巧总结 201509-3
题目的意思就是给你模板和变量名和变量值,将模板中变量名的地方用变量值替换输出,若无变量值输出空格。如果出现{{ 则表明出现了变量名,然后遍历模板中每一行内容。将变量名 和变量值 以。否则照常输出模板内容。原创 2022-03-06 16:20:18 · 381 阅读 · 3 评论 -
CCF 买菜(满分代码 + 解题思路 + 技巧总结) 201809-2
技巧总结计算两个区间的交集 :右区间的最小值减去左区间的最大值有的问题合在一起考虑会有很多种情况,但是单个单个的解决似乎更妙,比如:一个区间一个区间的计算解题思路由于一个人装菜的时间区间都互不相交,所以可以枚举A的每一个区间与B所有区间的所有交集,进行累加代码实现#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N原创 2022-03-05 11:36:11 · 448 阅读 · 0 评论 -
CCF 跳一跳(满分代码 + 解题思路)201803-1
题目描述解题思路处理三种情况0没成功,游戏结束1没跳中中心,加一分2跳中了中心,若上一次是第一次跳或者上一次得分为一分,则加2分,否则得分为上一次得分 + 2代码实现#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 40;int a[N];int main(){ int res = 0;原创 2022-03-04 15:32:45 · 3525 阅读 · 0 评论 -
CCF 分蛋糕(满分代码 + 解题思路 :模拟)201703-1
从第一个拿蛋糕的人开始枚举,每一轮迭代表示一个人拿蛋糕的过程(不论这个人是否能拿到>=k的蛋糕,他一定会拿到蛋糕,所以能拿到蛋糕的同学数量+1)根据累计这个人拿蛋糕的分量是否>=k,决定得到的蛋糕数量。每一轮迭代开始时,i都指向下一块即将分配的蛋糕。原创 2022-03-03 21:26:18 · 537 阅读 · 0 评论 -
CCF I’m stuck(满分代码 + 解题思路 + 技巧总结) 201312-5
就是假如你要从(x, y)走到(a, b),你先判断从(a, b)能否走到(x, y),若能,则从(x, y)走到(a,b)如果st1中显示从起点无法到达终点则输出“I’m stuck!所以可以开设两个数组记录是否分别满足上述两个条件。然后同时遍历两个数组,计数满足上述条件点的个数。原创 2022-03-03 20:47:38 · 663 阅读 · 0 评论 -
CCF 卖菜(满分代码 + 解题思路)201809-1
题目描述解题思路题目的意思就是给一个数组,如果是数组两端,那么就求与相邻一个数的平均值,如果是数组中间,就求与相邻两个数的平均值遍历一遍数组进行计算即可注意平均值是下取整代码实现#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int n;int a[N];int res[N];int ma原创 2022-03-02 16:16:33 · 284 阅读 · 0 评论