![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CCF CSP认证练习
CCF CSP认证
德林恩宝
计算机科学与技术专业研究生,研究方向为计算机视觉[E-mail:baolliu@foxmail.com]
展开
-
CCFCSP 201512-2 消除类游戏(100score)
题目来源于CCFCSP试题编号:201512-2 试题名称:消除类游戏 时间限制:1.0s 内存限制:256.0MB 问题描述:问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子原创 2020-09-12 16:31:50 · 192 阅读 · 0 评论 -
CCFCSP 201609-2 火车购票(100score)
题目来源于CCFCSP问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。 购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。 假设初始时车票全部未被购买,现在给了一些购票指令原创 2020-09-11 10:28:55 · 188 阅读 · 0 评论 -
CCFCSP 201609-1 最大波动(100score)
题目来源于CCFCSP问题描述小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。输入格式输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。 第二行包含n个正整数,依次表示每天的收盘价格。输出格式输出一个整数,表示这只股票这n天中的最大波动值。样例输入62 5 5 7 3 5样例输出4样例说明第四天和第五天之间的波动最大,波动值为|原创 2020-09-11 08:33:25 · 279 阅读 · 0 评论 -
CCFCSP 201612-4 压缩编码(100score)
题目来源于CCFCSP问题描述给定一段文字,已知单词a1, a2, …, an出现的频率分别t1, t2, …, tn。可以用01串给这些单词编码,即将每个单词与一个01串对应,使得任何一个单词的编码(对应的01串)不是另一个单词编码的前缀,这种编码称为前缀码。 使用前缀码编码一段文字是指将这段文字中的每个单词依次对应到其编码。一段文字经过前缀编码后的长度为: L=a1的编码长度×t1+a2的编码长度×t2+…+ an的编码长度×tn。 定义一个前缀编码为字典序编码,指对于1 ≤ i &l原创 2020-09-10 20:56:35 · 325 阅读 · 0 评论 -
CCFCSP 201612-3 权限查询(100score)
题目来源于CCFCSP问题描述授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个模块的操作权限。 本题中的授权机制是这样设计的:每位用户具有若干角色,每种角色具有若干权限。例如,用户 david 具有 manager 角色,manager 角色有 crm:2 权限,则用户 david 具有 crm:2 权限,也就是 crm 类权限的第 2 等级的权限。 具体地,用户名和角色名称都是由小写字母组成的字符串,长度不超过 32。权限分为分等级权原创 2020-09-10 20:38:47 · 299 阅读 · 0 评论 -
CCFCSP 201612-1 中间数(100score)
题目来源于CCFCSP问题描述在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式输入的第一行包含了一个整数n,表示整数序列中数的个数。 第二行包含n个正整数,依次表示a1, a2, …, an。输出格式如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。样例输入62原创 2020-09-10 08:06:24 · 254 阅读 · 0 评论 -
CCFCSP 201703-4 地铁修建(90score,有超时问题)
题目来源于CCFCSP问题描述A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力,A市决定在1号到n号枢纽间修建一条地铁。 地铁由很多段隧道组成,每段隧道连接两个交通枢纽。经过勘探,有m段隧道作为候选,两个交通枢纽之间最多只有一条候选的隧道,没有隧道两端连接着同一个交通枢纽。 现在有n家隧道施工的公司,每段候选的隧道只能由一个公司施工,每家公司施工需要的天数一致。而每家公司最多只能修建一条候选隧道。所有公司同时开始施工。 作为项目负责人,你获得了候选隧道的信息,现在你可以按自己的原创 2020-09-08 19:40:24 · 323 阅读 · 0 评论 -
CCFCSP 201703-3 Markdown(100score)
题目来源于CCFCSP问题描述Markdown 是一种很流行的轻量级标记语言(lightweight markup language),广泛用于撰写带格式的文档。例如以下这段文本就是用 Markdown 的语法写成的: 这些用 Markdown 写成的文本,尽管本身是纯文本格式,然而读者可以很容易地看出它的文档结构。同时,还有很多工具可以自动把 Markdown 文本转换成 HTML 甚至 Word、PDF 等格式,取得更好的排版效果。例如上面这段文本通过转化得到的 HTML 代码如下所示:原创 2020-09-08 19:34:22 · 216 阅读 · 0 评论 -
CCFCSP 201703-2 学生排队(100score)
题目来源于CCFCSP思路分析巧妙运用C++ STL即可简便的解决问题。使用vector进行数据的存储。然后使用find函数进行数字位置的查找根据找到的位置和q的正负值,决定两种插入方式,因为inset函数每次插入在所给的位置之前。然后再删除之前旧的值所在的位置的元素即可。代码分析//201703-2 学生排队#include<iostream>#include<vector>#include<algorithm>using names原创 2020-09-08 19:25:59 · 214 阅读 · 0 评论 -
CCFCSP 201703-1 分蛋糕(100score)
题目来源于CCFCSP思路解答按照序号依次读取,当累计的蛋糕量大于等于k时,即满足一位小朋友的分量,依次计算即可。当然最后需要注意的是,最后剩下的不足K的分量,也可以分给一个小朋友,尽管分量不足,但也要算上一人。代码分析//201703-1分蛋糕#include<iostream>#include<vector>using namespace std;int main(){ int n, k; cin >> n >> k; i原创 2020-09-08 19:18:10 · 197 阅读 · 0 评论 -
CCFCSP 201712-3 Crontab(65score???)
题目来源于 CCFCSP思路分析字符串的处理应该是我的一大弱点啊。按照题目的意思给定初始时间和结束时间,即时间范围,输出该范围内的所有事件。考虑到星期和月份都是可以用英文简写来表示,那么在输出配置信息的时候,我们可以将其全部转换为用数字代替,便于之后的查找。此外,将所有的‘*’表示,用数据-1表示,代表所有取值。在配置信息存储完成后,进行按照年,月份,号数,小时,分钟的顺序进行从小到达的循环遍历,查找所有可能出现的事件并输出即可。代码解析//201712-3 score 6原创 2020-09-07 08:09:51 · 157 阅读 · 0 评论 -
CCFCSP 201709-2 公共钥匙盒(100score)
题目来源于CCFCSP思路解析先利用一维数组确定钥匙的最初的位置。将教师使用的钥匙开始时间与结束时间存入时间变量数组,进行时间遍历。每一个循环先进行还钥匙,再进行取钥匙。代码解析#include<iostream>#include<vector> #include<algorithm> #include<set>using namespace std;typedef struct person { int id; //编原创 2020-09-07 00:09:21 · 160 阅读 · 0 评论 -
CCFCSP 201709-1 打酱油(100score)
题目来源于CCFCSP代码解析数据拆分成30与50的组合即可代码解析#include<iostream>using namespace std;int main(){ int N,num = 0; cin >> N; for(int x = 0;x <= N;x += 10){ int y = N - x; int three = x / 30; int three_mod = (x % 30)/ 10; int five = y /原创 2020-09-07 00:01:30 · 195 阅读 · 0 评论 -
CCFCSP 201712-1 最小差值
题目来源于CCFCSP思路分析从小到达排序即可,然后相邻项,进行求差,并找出最小差值即可代码解析#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ int n,num,difference = 0x0fffffff; vector<int> value; cin >> n; while (n--)原创 2020-09-06 23:37:07 · 198 阅读 · 0 评论 -
CCFCSP 201709-4 通信网络(100score)
题目来自CCF CSP认证思路分析主要思路:进行暴力深度遍历。代码解析#include<iostream>#include<vector>#include<string.h> using namespace std;int mp[1001][1001]; //邻接矩阵 int vis[1200]; //标记访问 vector<int> vec[1001]; //每一直接相连的点的集合 //exp为该路径经过的点原创 2020-09-06 23:31:30 · 329 阅读 · 0 评论 -
CCFCSP 201803-2URL映射(60score)
题目来源于CCF CSP思路解析暴力遍历即可。目前已知的注意的地方在于:整数参数输出时要把前导零去掉。题目规定规则中 和 前面一定是斜杠,后面要么是斜杠,要么是规则的结束(也就是该参数是规则的最后一部分)。而 的前面一定是斜杠,后面一定是规则的结束。无论是 URL 地址还是规则,都不会出现连续的斜杠。“/”规则的出现。可能存在我未知的一些bug,目前只有60 score.代码解析//201803-3 URL映射 grade:60#include<iostream原创 2020-09-04 08:17:48 · 162 阅读 · 0 评论 -
CCFCSP 201803-2碰撞的小球
题目来源于CCF CSP思路解析根据碰撞的时候,会改变方向,那么我们将每一个小球的位置用数组存起来,遇到相同的位置且运动方向不同时,改变运动方向即可。代码解析//201803-2 碰撞的小球#include<iostream>using namespace std;struct point { int pos; int direction; // -1<- ->1}pos[100];int main(){ int n, L, t; cin原创 2020-09-04 08:12:05 · 183 阅读 · 0 评论 -
CCFCSP 201803-1跳一跳
题目来源于CCF CSP思路分析总所周知,CCF CSP认证的1,2题属于容易题。思路较为简单,无坑。#include<iostream>using namespace std;int main(){ int num[30] = { 0 },value = 0,count = 0; for (int i = 0;; ++i) { cin >> value; if (value == 0) { break; } else { num原创 2020-09-04 08:07:18 · 152 阅读 · 0 评论 -
CCF CSP 201809-2买菜
题目来源于CCF CSP代码分析#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){ vector<pair<int, int> >mp1; vector<pair<int, int> > mp2; int n; cin >> n; int m = n; int st原创 2020-08-28 22:16:29 · 162 阅读 · 0 评论 -
CCF CSP201809-1卖菜
题目来源于CCF CSP代码分析#include<iostream>using namespace std;int main(){ int n; cin >> n; int a[1000]; for (int i = 0; i < n; ++i) { cin >> a[i]; } int value,count; for (int i = 0; i < n; ++i) { count = 0; value = 0;原创 2020-08-28 21:33:38 · 157 阅读 · 0 评论 -
CCF CSP201812-4数据中心
题目来源于CCF CSP思路分析最小生成树最小生成树中的最大边代码解析#include<iostream>#include<algorithm>using namespace std;const int Max = 100000;struct Edge { int start; int end; int cost;}edge[Max];int father[Max];//查找父节点int find_father(int point原创 2020-08-28 20:55:33 · 195 阅读 · 0 评论 -
CCF CSP201812-3 CIDR合并
题目来源于CCFCSP思路分析读懂题目很关键。思路在题目中已经给出。但是超时的问题不知道怎么解决。代码分析#include<iostream>#include<algorithm>#include<vector>#include<string>using namespace std;vector<pair<string, int>> vec;/*10进制ip转为二进制ip表示*/void原创 2020-08-28 16:50:39 · 218 阅读 · 0 评论 -
CCF CSP201812-2小明放学
#include<iostream>using namespace std;int main(){ long long int r,g,y,n,k,t,total = 0,alltime; cin >> r >> y >>g; alltime = r + y + g; cin >> n; while(n--){ int temp = 0; cin >> k >> t; if(k == 0) ..原创 2020-08-26 17:21:54 · 318 阅读 · 0 评论 -
CCF CSP201812-1 小明上学
题目来源于CCF CSP代码解析#include<iostream>using namespace std;int main(){ int r,y,g; cin >> r >> y >> g; int peer = 0; cin >> peer; int k,t,total = 0; while(peer--){ cin >> k >> t; if(k == 0 || k == 1){原创 2020-08-22 16:33:50 · 156 阅读 · 0 评论 -
CCF CSP202006-4 1246(c++动态规划)
思路分析算法:动态规划发现每一次数字是有规律的:规律式子:str_map[i] = str_map[i - 3] + str_map[i - 1].substr(str_map[i - 4].size()) + str_map[i - 2];如上图:用i表示行号;i = 1,str[1] = 2;i = 2,str[2]= 4;i = 3,str[3] = 16;i = 4,str[4] = str[1] + str[3].substr(str[0].size()) + str[2...原创 2020-07-27 00:02:54 · 3799 阅读 · 3 评论 -
CCF CSP202006-3 Markdown渲染器
题目来源于CCF CSP思路分析参考M_theory004的代码思路,自己整理了一下:这道题看着头大,文字描述比较多。定义一个容器,存入每个项目或者段落的字符串,并且用标志位标识开来。遇到相同项目列表时,第一个标识1,后续的子项目标识为2,这是为后面空行做铺垫,因为每个项目列表与段落或者项目列表与项目列表之间都要有一个空行隔开。每次存入容器的时候,查看紧邻的上一行是空行还是项目或者段落。如果上一行是空行,那么此时存入容器的只能是段落或者新的项目列表;如果原创 2020-07-26 00:22:49 · 1925 阅读 · 4 评论 -
CCF CSP202006-2 稀疏向量
题目来源于CCF CSP####代码解析//这是一道简单题#include<iostream>#include<map>using namespace std;int main(){ ios::sync_with_stdio(false); int n, a, b;//维数,a,b向量的非零值个数 cin >> n >> a >> b; map<int, int> mp; int pos, val; lo原创 2020-07-23 23:19:30 · 2041 阅读 · 9 评论 -
CCF CSP202006-1 线性分类器
题目来源于CCF CSP代码解析//这道题是简单题#include<iostream>using namespace std;struct Node { int x; int y; char kind;}node[1000];bool Check(int n,int x0,int x1,int x2) { #define result(x,y) (x0 + x * x1 + y * x2) char kind_first = 'z', kind_second = '原创 2020-07-23 22:55:30 · 386 阅读 · 0 评论 -
CCF CSP2019.3 消息传递接口
题目来源CCF CSP思路分析我觉得我的思路没有问题,可是运行n >= 1000时就错误了,先记在这里。思路:每次读完一个代码样例,然后存在一个string数组;进行寻找配对时,如第一个进程L0是R1 S1,第二个进程L1是S0 R0,那么执行的时候,根据L0接受来自L1的信号,那么直接将L1的第一个信号S0来进行比较,若满足,就可同时消去这两个信号,然后依次进行。如不满足,那么将L1中的第一个信号又作为新的比较对象,即L1需要发送到L0,那么将线程L0的信号与此比较,以此类推。原创 2020-07-23 16:29:43 · 249 阅读 · 0 评论 -
CCF CSP2019.3 损坏的RAID5
题目来源于CCF CSPr认证系统代码解析#include<iostream>#include<string>using namespace std;const string base = "0123456789ABCDEF";string str[1007]; //存每一个硬盘的字符串 string X_OR(int start_disk, int label, int n) { string temp = "00000000"; for (int原创 2020-07-22 01:46:45 · 313 阅读 · 0 评论 -
CCF CSP2019.3 二十四点
题目来源于CCF CSP思路解析这道题目和我以前数据结构作业类似,因此做的比较快,当然,这道题目的思路也比较简答,我采用的是使用vector容器,做类似栈的处理,先将乘除法运算,然后再次计算加减即可完成任务。代码解析#include<iostream>#include<string>#include<vector>using namespace std;string Value(string str, int& i){ string原创 2020-07-20 00:14:56 · 270 阅读 · 0 评论 -
CCF CSP2019.3 小中大
题目分析这道题目真的看起来非常简单,但是细节还是需要注意,中位数的为整数时,直接输出;为小数时,四舍五入保留一位小数。代码解析#include<iostream>#include <iomanip> #include<cmath>using namespace std;int main(){ int n; int max = -10000001,min = 10000000 ,temp; float mid,pre = 0,late = 0...原创 2020-07-19 22:51:19 · 280 阅读 · 0 评论 -
CCF CSP2019.9 -- 字符画
题目来源CCF CSP题目代码解析这道题目在输出部分说的比较含糊,输出部分有参考网上代码(点击跳转了解)#include<iostream>#include<iomanip>#include<vector>using namespace std;int m, n; //列,行int p, q; string** G_str = new string * [1081];int S_R, S_G, S_B;//简写复原函数void Co原创 2020-07-18 11:15:23 · 203 阅读 · 0 评论 -
CCF CSP2019.9 -- 小明种苹果(续)
题目来源CCF CSP代码解析#include<iostream>using namespace std;struct Node { int value; //为1时,表示当前苹果树存在掉落情况 int pos; //该苹果树的下一棵的下标};int main(){ int N, count = 0, Time, temp, temp_total, last_Z = 0, Ans_total = 0, D = 0, E = 0, flag; cin >&g原创 2020-07-17 21:01:18 · 187 阅读 · 0 评论 -
CCF CSP2019.12 -- 化学方程式
可能在第六个测试测试点存在问题,但是很无奈,没找出来,样例数据都通过了。个人代码如下,供参考#include<iostream>#include<string>#include<string.h> #include<map>#include<deque>using namespace std;//处理括号以及嵌套问题void delete_brackets(map<string, int>& mp, ...原创 2020-07-03 09:20:52 · 474 阅读 · 1 评论 -
CCF 2019.12 认证 -- 回收站选址
#include<iostream>#include <algorithm>using namespace std;struct Point { long int x; long int y;}point[1000];int comp(const Point& s1, const Point& s2) { if (s1.x == s2.x) { return s1.y < s2.y; } else { return s1.x...原创 2020-06-29 12:04:11 · 262 阅读 · 0 评论 -
CCF 2019.12 认证 -- 报数
CCF认证题目链接#include<iostream>using namespace std;//判断函数bool Is_judge(int num,int &temp_cnt,const int &total_cnt,int &flag) { if (num % 7 == 0) return 0; else { while (num != 0) { if (num % 10 == 7) return 0; else原创 2020-06-29 10:00:43 · 406 阅读 · 0 评论