CCF-CSP认证题解
这个专栏用来发布CCF-CSP认证题解, 以供同学们借鉴学习.
姬小野
这个作者很懒,什么都没留下…
展开
-
CCF_2018_3月_碰撞的小球
今天计划花几个小时尝试一下CCF认证考试的题目, 结果做的快要崩溃了.花了不到半小时做完前两道题目, 然后尝试第三题, 一道好复杂的字符串匹配题, 无从下手, 写了一般干脆跳过, 做起第四题. 一看还蛮简单的? 哎, 做了好久, 发现还是做不出来. 这他妈情况太复杂了, 果然现在还是太菜了. 所以我估计我到考场上的情况, 就是半小时做两题, 三个半小时做零题. 真让人崩溃. 第二题碰撞...原创 2018-04-15 11:19:26 · 428 阅读 · 0 评论 -
映射算法_反排序算法_自创
—————————2018-04-17更新————————最下面有更新—————————以下原博客————————今天做2018年3月份ccf认证第二题的时候, 有个过程是关于对位映射的问题. 怎样的呢?比如这样两个序列: 14 7 8 5 57 32把他们排序之后分别是 7 8 14 5 32 57那么 14 映射 57 ...原创 2018-04-15 11:42:44 · 1161 阅读 · 0 评论 -
暑假编程训练_数塔取数
数塔取数这是一道入门的动态规划题, 没做过的可能很难想出, 但是做过的会觉得很简单. 这道题相比最基础的数塔取数多了一个求路径. 只要记录所继承的下一层数的下标. 最后从头开始走过这些下标就是路径了. 时间复杂度是O(n), n为数塔的数的个数.#include <iostream>#include <cstring>using namespace st...原创 2018-07-09 16:04:15 · 172 阅读 · 0 评论 -
2017-12CCF认证_1,2题
一. 试题编号: 201712-1 试题名称: 最小差值 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔。 输出格...原创 2018-07-28 13:36:36 · 1186 阅读 · 0 评论 -
CCF-201403-4 无线网络
试题编号: 201403-4 试题名称: 无线网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要距离不超过 r 就能互相建立网络连接。 除此以外,另有 m 个可以摆放无线路由器的位置。你可以在这些位置中...原创 2018-07-18 15:53:51 · 470 阅读 · 1 评论 -
CCF 201712-04 行车路线_Dijkstra变形
201712-04行车路线 传送门这看似是一个很复杂的问题, 实际上, 额…首先它有基础的最短路问题的影子,题目有20%的数据是没有小道的,可用Dijkstra算法直接求那么本着那更多的部分分的战略, 我们先写基础程序(先假设全部都是大道) OK, 初稿裸的dijkstra是20分, 那么考试的时候这20分也比较稳了, 距离满分也只有80分罢了… 罢了… 罢了…查看数据描述:...原创 2018-08-05 21:42:31 · 2358 阅读 · 7 评论 -
CCF201709-4通信网络_双向DFS
这题一看, 如果不考虑时间的话, 用floyd算法求传递闭包和对称闭包是可以解决的, 但是题目的数据只够过60分, 正解显然不是这样.然后我又思考, 开始往复杂了想, 于是有了下面的不知对错的思路: 先判断图是否连通,否则结果为0 用tarjan算法缩点, 把环全都合成一个结点,他们的处境是一样的 找到一个入度为0的结点,(缩点之后一定存在), 它会指向好几个点, 找出...原创 2018-08-06 09:39:00 · 762 阅读 · 0 评论 -
CCF201709-5 除法_树状数组
201709-5 除法 传送门这是一道描述相比于其他第五题来说比较简单的题目, 那么, 这道题真的简单吗?答案是: 是的, 或者说想出正确解法不难.了解这道题后会发现, 这不就是一道树状数组的题目么? 区间数的和, 某个数的更新, 很典型的树状数组. 确实是这样, 不过此题有几个坑.首先是暴力解法, 按照题目的描述一步一步来即可, 当然的高分是不可能的, 只有30分. 不过这也启发...原创 2018-08-06 16:41:57 · 356 阅读 · 1 评论 -
CCF 201703-3 Markdown
这是我做过的最简单的第三题, 一遍就过了. 按照题目要求的进行字符串转换即可.要是今年九月份的CCF认证有这么简单就好了.既然分了区块和行内两种层次, 那么首先应该划分区块,然后对区块的内容分别处理先进行区块划分 输入文本里的空行应该是”“, 空字符, 也没有换行表示什么的. 用一个函数分别对每个区块进行解析 处理段落处理标题, 注意字符串拼接, 还是一个一个接比较好. ...原创 2018-08-06 21:27:18 · 299 阅读 · 0 评论 -
CCF 201703-4 地铁修建_最小生成树
自己独立思考出这道题, 而且正解思路是一遍过, so 嗨皮.贴一下思路历程, 思考的过程是很珍贵的. 对一个问题, 从陌生到有一个大致的了解, 其中会有错误的思路, 发现错误然后及时回头去想其他的方法. 有时有能做出结果的思路但不是最好的思路, 从差方法上进行横向拓展, 突然灵机一动, 想到另一种方法, 最后解答出来.以下初印象: 这像是一道DAG最长路或者说关键路径题目,但是又很...原创 2018-08-06 23:38:04 · 320 阅读 · 0 评论 -
201612-3 权限查询 模拟
传送门CCF第三题, 同样是一道非常复杂度模拟题, 要非常细心不要漏掉哪一点.可惜我只得了90分, 没得满分, 找不出那10分是错在哪里了.贴下90分代码#include <algorithm>#include <iostream>#include <vector>#include <map>using namespace s...原创 2018-08-07 19:08:35 · 264 阅读 · 2 评论 -
CCF 201612-4 压缩编码_石子合并问题_DP
201612-4 压缩编码 传送门想了很久, 还是没有独立做出来. 虽然从问题中抽象出来了是一个什么样的问题. 下面是自己想的思路如果这棵树一定要保持叶子节点字典序递增的话,前序遍历的顺序就是字典序. 那么一个结点(按顺序输入的),只能和相邻的结点合并. 合并n - 1次之后, 结果就是一棵维持字典序递增的树的长度. 但是这种合并有很多种情况,答案就是所有情况里面结果最小的...原创 2018-08-07 19:25:20 · 849 阅读 · 0 评论 -
CCF 201609-3 炉石传说
201609-3 炉石传说 传送门纯粹的模拟题, 按照规则一步步来模拟即可, 然而辣鸡的我之得了90分, 找了好久没有找出那10分的bug.要注意的一点是: 操作数可能为0还是贴一贴90分的辣鸡代码, 毕竟是一个一个敲出来的#include <algorithm>#include <iostream>#include <vector>usi...原创 2018-08-08 21:55:56 · 268 阅读 · 0 评论 -
CCF 201609-4 交通规划_最短路
CCF 201609-4 交通规划 传送门先放张图得瑟得瑟, 一遍过, so happy.这是一道描述非常简单的题目, 看到题目就有点小开心, 觉得肯定能做出来的.目的很清晰, 所有的点到首都的距离都是最短路, 那么最短路就要保存下来舍弃其他无用的边. 看数据范围, 就用SPFA算法了. 中心思想是记录最短路径+去除无用边关键是一条路的最短路可能会有好几条, 那么应该怎么选呢?...原创 2018-08-09 09:45:28 · 802 阅读 · 0 评论 -
CCF 201604-3 路径解析
CCF 201604-3 路径解析 传送门没看懂题目, 感觉乱七八糟的, 这是什么规则, 怎么看不懂啊? 无奈之下搜了搜题解, 自己按照大佬的方法做了一次, 觉得好像真是那么回事. 大概是因为没有路径查询的相关经验吧, 所以看题的时候会无法理解一些反常识的操作. 会觉得莫名其妙.总之, 方法就是如果查询的路径是相对路径, 那么把它添加到当前目录里面去, 绝对路径不变.然后对新的路径进行...原创 2018-08-09 12:21:43 · 1154 阅读 · 1 评论 -
CCF 201604-4 游戏_BFS
CCF 201604-4 游戏 传送门一看题目觉得很简单, 这不就是一道bfs水题吗? 但心里面告诉自己千万不要轻敌, 认真分析下题目先.如果按照常规的BFS思路, 会有一个bug: 因为这些障碍是在一段时间不通过,所以如果回来可能会更快. 那么这时vis数组就失效了,因为回不来…思考一下会发现, 不外乎两种情况.一种是不会回来了, 刚好可以过掉 另一种是回来反而会得到更优的解,...原创 2018-08-09 13:32:35 · 1121 阅读 · 9 评论 -
CCF 201512-3 画图_BFS
CCF 201512-3 画图 传送门模拟, 还带了个BFS, 比较简单. 但是第一次提交只得了90分. 因为在判断交点的时候, 考虑了 -遇到| 和 |遇到- 的情况却没考虑|和-遇到+的情况, 真是蠢哉, 蠢哉.#include <algorithm>#include <iostream>#include <vector>#include &l...原创 2018-08-09 16:55:11 · 309 阅读 · 0 评论 -
CCF 201512-4 送货
CCF 201512-4 送货 传送门此题只得了80分, 说是运行错误, 找了好久的bug, 都找不出哪里出错. 然后找了其他博客代码, 提交了三四个, 都是80分(他们博客上说是100分代码). 然后我想, 这应该是CCF的问题吧.这道题就是求欧拉路径.注意几点:1.一定要判断是否是连通图, 不然是错的.(判断输出点数是否为m + 1即可) 2.bool类型可以开boo[1...原创 2018-08-09 20:22:40 · 553 阅读 · 2 评论 -
CCF 201512-5 矩阵_50分_矩阵快速幂
CCF 201512-5 矩阵 传送门这道题看上去好像可以用变形的矩阵快速幂求解, 但是最大数据范围m = 1000,n = 100,k ≤ 1e9, 常规的算法复杂度*O(m^3*n*logk)*肯定是不可以了, 高达1e12级数. 但是较小的数据还是可以过掉的.我得了50分, 过掉了较小的数据, 在百度上没有找到有谁发出100分的代码, 自己也暂时想不出正解.这里的变形, 是矩阵...原创 2018-08-10 13:19:29 · 549 阅读 · 0 评论 -
CCF 201509-3 模板生成系统
CCF 201509-3 模板生成系统 传送门一道还算简单的模板题, 不过最开始写的版本居然超时了?!!! 只得了90分. 然后做了一个优化, 还是超时, 又做了一个优化(其实是填坑), 终于不超时了. 但是我发现其实那个超时不是程序太慢的原因, 而是题目的一个坑! 专门用来卡我的这种做法的! 我的做法是对每一行, 查询满足{{ name }}格式的字符串, 然后用已知的键值对来替换掉...原创 2018-08-10 18:39:24 · 332 阅读 · 0 评论 -
CCF 201509-4 高速公路_Tarjan算法
CCF 201509-4 高速公路 传送门这道题基本算是裸的Tarjan算法了, 只要求出每个强连通分量, 然后根据这些分量的元素数计算便利城市对即可, 数据也没有优化的坑. 会Tarjan算法的人大概会在考场上大呼简单, 但不会的人恐怕只有0分了, 说明CCF认证还是需要一定量的算法知识的.第一稿只得了80分. 找了很多博客对比, 期间发现他们很多人, 一个简单的Tarjan算法写的那么...原创 2018-08-10 21:19:05 · 315 阅读 · 3 评论 -
CCF 201503-3 节日_Zeller公式
CCF 201503-3 节日 传送门一道日期相关的题目, 用Zeller公式可简化过程.思路就是通过Zeller公式获得某一年得m月1日的星期, 再根据这个星期获取该月份的第th个星期w的天数.Zeller公式: (c/4 - 2*c + y + y/4 + 13*(m + 1)/5 + d - 1)mod7但要注意的是此公式有几个坑! 那就是1月2月要当作上一年的13月14...原创 2018-08-11 11:02:30 · 445 阅读 · 1 评论 -
CCF 201503-4 网络延时_两种方法
CCF 201503-4 网络延时 传送门初看题: 这不就是多源最短路径里长度最大的? floyd? 不过看数据,这样只能过70%的数据,正解肯定不是这样. 写了份floyd交上去, 70分. 这说明出题人特别仁慈, 给了这么多放水的数据, 可是这样是不是太不公平?但是什么是正解呢? 1 ≤ n ≤ 10000,1 ≤ m ≤ 10000, 这么大个数据,肯定得从题目的特殊性下手思考...原创 2018-08-11 14:03:47 · 974 阅读 · 1 评论 -
CCF 201503-5 最小花费
CCF 201503-5 最小花费 传送门毕竟是个蒟蒻, 所以这CCF-CSP第五题也只能用用O(nm)的算法暴力去解了, 而且常数还TM很大. 得了30分, 也算是出题人放了个小水.用DFS找到两端点的路径, 同时存储边的长度. O(n)对每一条路径点判断物价大小,维持当前最小的物价,购买尽可能多的粮食直到可以走到更小的物价处注意用long long, 不然你只能得个10分咧...原创 2018-08-11 16:17:32 · 1171 阅读 · 0 评论 -
CCF 201412-4 最优灌溉_Kruskal
CCF 201412-4 最优灌溉 传送门以前的CCF第四题居然这么水, 出了一道裸的最小生成树. 写了6分钟就100分了. 光看题目, 最优灌溉, 还以为是网络流问题.辣鸡代码, 不值一看#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;...原创 2018-08-12 12:26:11 · 329 阅读 · 0 评论 -
CCF 201412-3 集合竞价
CCF 201412-3 集合竞价 传送门只得了80分, 饮食找不出bug在哪里.思路是: 1. 对命令进行处理, 改取消的取消, 可以stringstream方便读取字符串中的string double int. 2. 将两种命令(sell和buy)分别按价格排序. 3. 同时向右查询, 以buy为循环外围, 对每个可更新答案的情况进行更新. 答案一定是buy的某个价格, 对每...原创 2018-08-12 13:18:45 · 380 阅读 · 2 评论 -
CCF 201409-4 最优配餐
CCF 201409-4 最优配餐 传送门这道题很水, 不过刚开始超时了. 有一个收获: 对一张图里分散的点进行BFS时, 不必每次都将其作为源点, 进行BFS. 而可以全部压入队列中, 进行BFS. #include <algorithm>#include <iostream>#include <cstring>#include <vect...原创 2018-08-13 10:49:08 · 466 阅读 · 0 评论