CCF CSP
如题
Yuhan の Blog
这个作者很懒,什么都没留下…
展开
-
CCF CSP 201612-4 压缩编码(区间dp+平行四边形优化)
思路:稍微理解一下就可以看出来就是裸的石子合并问题;利用区间dp加上平行四边形优化可以直接解出来;复杂度接近O(n2)O(n^2)O(n2)代码:#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn=1005;const LL INF=1ll<<62...原创 2019-12-11 16:56:38 · 216 阅读 · 0 评论 -
CCF CSP 201703-4 地铁修建(Dijkstra)
思路:题意即求结点1到结点n的所有路径中,边权的最大值最小的那条路径的边权最大值,稍微改用一下Dijkstra即可;代码:#include<bits/stdc++.h>using namespace std;const int MAX_V=1e5+99;const int INF=1<<30;struct edge{int to,cost;};typed...原创 2019-12-11 15:23:03 · 338 阅读 · 0 评论 -
CCF CSP 201903-3 损坏的RAID5(模拟)
思路:1.首先用数组存储所有的字符串;2.我们通过计算可以得到一共有num=len/8*(n-1)个块,查询时如果超出编号范围输出-;3.我们记所有磁盘,条带号相同的部分组成一个区域,区域编号就按条带号,例如下图被分为三个区域:4.如果块号为bbb,则我们先推算出它在第[b(n−1)s][\frac{b}{(n-1)s}][(n−1)sb](从0开始编号)个区域([a][a][a]代...原创 2019-12-09 14:03:21 · 208 阅读 · 0 评论 -
CCF CSP 201903-4 消息传递接口
思路:1.可以用0来存储R,用1来存储S,用一个queue<pair<int,int>>数组来存储每一个进程的指令;2.如果总指令数为奇数,那必定出现死锁;否则就依次遍历每一个进程,比较它需要收发信息的对象进程是否对应它的收/发(异或即可),对应上就pop这两个指令;3.如果循环一圈都没有pop指令那就出现了死锁;反之所有指令都pop了,那就不会出现死锁;代码:...原创 2019-11-21 18:04:39 · 308 阅读 · 0 评论 -
CCF CSP 201709-4 通信网络
思路:1.正着存一个图,再把边的方向倒过来再存一个图;2.对于每个点,dfs正着的那个图,再dfs倒着的那个图,分别设立两个数组标记每个点是否被访问,如果有点两次都没有被访问,则该点不能知道所有点;3.刚开始想错了,想着正着要遍历到所有点或者倒着要遍历到所有点才行,这样才30分,而且觉得自己很对,30分的朋友可以康康是不是这个错QAQ;代码:#define IOS ios::sync...原创 2019-11-15 16:59:26 · 350 阅读 · 0 评论 -
CCF CSP 201812-4 数据中心
思路:这题直接抄并查集和Kruskal模板就行;(做题前:为什么要用板子,我可以自己写。做题后:板子真香啊。)代码:#define IOS ios::sync_with_stdio(false);cin.tie(0)#include<bits/stdc++.h>using namespace std;const int MAX_N=50005;const int M...原创 2019-11-14 17:44:27 · 169 阅读 · 0 评论 -
CCF CSP 201712-4 行车路线
思路:这题有两种思路:Dijkstra和SPFA,都可以100分;在求最短路径时,Dijkstra往往是效率比较高的解法,但是本题使用Dijkstra的变形并不能完全贴合题意,因为这种贪心算法遇到“局部最优≠整体最优”的情况就失效了,但是不妨拿来练练手hh;Dijkstra:大体框架还是照搬Dijkstra,但是注意使用long long,唯一变形的就是另设一个数组clen[],用来表示第i...原创 2019-11-11 19:33:51 · 432 阅读 · 0 评论 -
CCF CSP 201909-4 推荐系统
思路:1.将所有商品存进set里,按分数降序排序,如果分数相同,判断它们是否为同类商品,如果是,则按编号升序排序,如果不是,则按类别编号升序排序;2.增加删除什么的直接在set里操作就行了;3.查询时,用m个vector存储需要输出的商品,然后从前往后扫set,如果该商品对应的类别没有满,则将它加入对应的vector,如果总数量等于k,则退出查找;4.最后将m个vector挨个输出就好啦;...原创 2019-11-08 17:00:57 · 583 阅读 · 0 评论 -
CCF CSP 201803-4 棋局评估(博弈问题)
思路:1.基本思想就是暴力,枚举每一种可能情况,利用决策树进行对抗搜索;2.Alice搜索时,选取所有返回值里最大的那个,Bob相反;3.也可以用记忆化搜索进行优化,我用的string保存棋盘,用unordered_map<string,int>保存每一次结果即可;4.这题用getchar就翻车 = = ,本地调试都过了提交一分都没有,说明后台压根没按题目上给的格式来测试。代...原创 2019-11-07 17:12:29 · 190 阅读 · 0 评论 -
CCF CSP 201503-3 节日
思路:1.先计算1850年a月1日星期几,然后往后算一直到y1年a月1日星期几,跨年时注意月份,如果是三月往后,则每次跨年计算需要判断下一年是不是闰年,否则判断当前年是不是闰年;2.定位到y1年a月1日星期几后,需要判断星期c在不在本周,然后采用不同的式子计算;代码:#include<bits/stdc++.h>using namespace std;typedef pai...原创 2019-11-05 21:03:22 · 281 阅读 · 0 评论 -
CCF CSP 201809-4 再卖菜
思路:1.设ai是第一天第i家店的菜价,bi是第二天第i家店的菜价;2.根据题意有:a2=2b1-a1+k (k=0,1)ai+1=3bi-ai-1-ai+k (k=0,1,2;1<i<n)an=2bn-an-1+k (k=0,1)3.我们知道a1是小于等于2b1且大于...原创 2019-11-04 18:19:08 · 262 阅读 · 0 评论 -
CCF CSP 201412-3 集合竞价
思路:1.用结构体存储信息;2.先用vector存储所有信息,最后再写入优先队列中,这样可以方便的处理cancel命令;3.输出的价格一定是买家里的,因此将买家的出价从大到小遍历,每遍历到一个价格,数数价格小于等于这个价格的卖家的总股数就好了,两个优先队列可以方便的实现这个过程;4.注意输出精度,注意数据范围;代码:#include<bits/stdc++.h>using...原创 2019-11-02 14:15:52 · 355 阅读 · 0 评论 -
CCF CSP 201509-1 数列分段
思路:前后不相同的位置的数量和+1即是答案;代码:#include<bits/stdc++.h>using namespace std;#define rp(i,n) for(int i=0;i<n;i++)const int N=1005;int arr[N];int main(){ int n; cin>>n; rp(i,n) cin>...原创 2019-10-31 17:45:18 · 203 阅读 · 0 评论 -
CCF CSP 201509-2 日期计算
思路:用数组存对应月份的日期代码:#include<bits/stdc++.h>using namespace std;#define rpn(i,n) for(int i=1;i<=n;i++)int cal[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};int main(){ int y,d; cin>>y...原创 2019-10-31 17:43:04 · 148 阅读 · 0 评论 -
CCF CSP 201604-2 俄罗斯方块
思路:1.用数组存储原来的方格和即将落下的方格;2.从下往上搜原来的方格的底边(即最下面的、开始有1的行);3.然后一层一层模拟下降,正在落下的方格和目前方格对应的界面上的4*4区域里,不能有重叠即可;代码:#include<bits/stdc++.h>using namespace std;#define rp(i,n) for(int i=0;i<n;i++)...原创 2019-10-31 16:47:05 · 434 阅读 · 0 评论 -
CCF CSP 201412-2 Z字形扫描
思路:1.规律就是每一次斜着的扫描,这些点的坐标和相等;2.坐标和超过n+1后需要单独考虑;代码:#include<bits/stdc++.h>using namespace std;#define p_b(a) push_back(a)#define rp(i,n) for(int i=0;i<n;i++)#define rpn(i,n) for(int i=1...原创 2019-10-31 11:55:00 · 240 阅读 · 0 评论 -
CCF CSP 201403-3 命令行选项
思路:1.用数组存储某个字母是否应该带有参数、是否在格式字符串中出现过;2.用getline读取一行字符串,然后用stringstream来以空格为分割拆解字符串;3.每个字符串判断它是不是合法的,不合法就停止;合法的话判断它有没有参数,参数不合法就停止;4.用map存储每个选项和它带有的参数,没参数就用空的代替就好了,map会自动排序,最后按序输出即可;代码:#include<...原创 2019-10-30 15:58:03 · 425 阅读 · 0 评论 -
CCF CSP 201503-2 数字排序
思路:1.用数组来存储相应index出现的次数,结束后扫一遍数组;2.自定义一个排序即可;代码:#include<bits/stdc++.h>using namespace std;typedef pair<int,int> p;typedef long long ll;#define m_p(a,b) make_pair(a,b)#define p_b(...原创 2019-10-29 22:42:43 · 272 阅读 · 0 评论 -
CCF CSP 201409-5 拼图
在写这题时,先后根据不同博客学习了状压dp、矩阵快速幂,最后代码有些小bug参考了一位思路差不多的大佬以做出修改,在这里先感谢三位大佬,之后会在思路里贴出他们的博文链接;知乎上好多人喷CSDN怎样怎样,我觉得静下心来,在这一篇篇博文里还是能学到很多东西的嘛…思路:1.使用状态压缩动态规划来求递推式;2.不会状压dp的请看这位大佬的博客: https://blog.csdn.net/u011...原创 2019-10-29 17:51:13 · 904 阅读 · 0 评论 -
CCF CSP 201609-2 火车购票
思路:1.设立一个二维数组来表示i行j列是否被购买;2.设立一个一维数组来表示第i行最多剩几个连坐;3.对于每个订单,扫一遍一维数组,如果能找到连坐就买连坐,同时修改两个数组中的信息;如果不能找到连坐就开始遍历二维数组,找到空位就购买,同时修改两个数组中的信息;代码:#include<bits/stdc++.h>using namespace std;#define p_...原创 2019-10-28 21:12:54 · 252 阅读 · 0 评论 -
CCF CSP 201409-2 画图
思路:1.用一个二维数组存储所有方块是否被涂色;2.每次涂色改变二维数组的相应部分值即可;代码:#include<bits/stdc++.h>using namespace std;#define rp(i,n) for(int i=0;i<n;i++)const int N=105;bool matrix[N][N];int main(){ int n; ...原创 2019-10-28 16:01:22 · 241 阅读 · 1 评论 -
CCF CSP 201409-4 最优配餐
思路:1.学会将多源在一开始时全部加入队列,然后bfs求最优的做法;2.用一个二维数组表示目前该点离店最近的距离,所有距离初始化为1000*1000以上的值;3.将所有订单,以坐标和量按序存储起来,之后直接挨个累加就好了;4.总开销可能会超过int范围,所以可以使用long long;代码:#include<bits/stdc++.h>using namespace st...原创 2019-10-28 12:01:52 · 447 阅读 · 0 评论 -
CCF CSP 201503-1 图像旋转
思路:换个方式输出即可~代码:#include<bits/stdc++.h>using namespace std;#define N 1005int matrix[N][N];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++...原创 2019-10-25 22:55:26 · 404 阅读 · 0 评论 -
CCF CSP 201512-2 消除类游戏
思路:1.这题目不应该想太复杂,用最笨的方法反而思路最清晰;2.用一个二维数组存储棋盘,用另一个二维数组bool rm[N][N]存储相应位置的点应不应该被消除;3.遍历每个点,然后向右比较两个,如果三个都相等那就将三个点的rm都设为真,再向下比较,同理;4.第三点中不需要向左、向上比较;代码:#include<bits/stdc++.h>using namespace ...原创 2019-10-22 21:59:19 · 296 阅读 · 0 评论 -
CCF CSP 201809-3 元素选择器
这题考验思路的清晰和对细节的把握;刚开始不会写的时候翻了很多大佬们的代码,他们都说简单,萌新瑟瑟发抖…在参考其它大佬们的代码时也发现了他们的一些bug,例如按题目中的样例,用h1 h2去测试的时候,有些博主的代码会输出1 8,但实际上这是一个树状结构,理应输出0,希望大家在参考其它大佬的代码时不要产生和我一样的疑惑^ _ ^题目:题目略长直接放链接了~201809-3 元素选择器思路:...原创 2019-10-19 14:49:29 · 255 阅读 · 0 评论 -
CCF CSP 201403-2 窗口
试题编号:201403-2 试题名称:窗口 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。 当你点击屏幕上一个点的时候,你就选择了处于被点击位置...原创 2019-10-16 21:18:21 · 181 阅读 · 0 评论 -
CCF CSP 201403-1 相反数
试题编号:201403-1 试题名称:相反数 时间限制: 1.0s 内存限制: 256.0MB 问题描述:有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入格式:第一行包含一个正整数 N。(1 ≤ N ≤ 500)。第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些...原创 2019-10-16 21:11:43 · 267 阅读 · 0 评论 -
CCF CSP 201803-2 碰撞的小球
试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。 当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的...原创 2019-10-14 19:37:05 · 246 阅读 · 0 评论 -
CCF CSP 201803-1 跳一跳
试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这...原创 2019-10-14 19:25:00 · 178 阅读 · 0 评论 -
CCF CSP 201312-1 出现次数最多的数
试题编号: 201312-1 试题名称: 出现次数最多的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式: 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。输入的第二行有n个整数s1, s2, …, sn (1 ≤...原创 2019-09-15 16:48:22 · 234 阅读 · 0 评论 -
CCF CSP 201312-2 ISBN号码
试题编号: 201312-2 试题名称: ISBN号码 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标...原创 2019-09-15 17:02:08 · 501 阅读 · 0 评论 -
CCF CSP 201312-4 有趣的数
试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。因此,符合我们定义的最小的有趣的数...原创 2019-09-17 23:05:45 · 234 阅读 · 0 评论 -
CCF CSP 201903-1 小中大
试题编号: 201903-1 试题名称:小中大 时间限制: 1.0s 内存限制: 512.0MB 思路:从0开始编号到n-11.n为奇数情况,将第一个数,第(n-1)/2个数,最后一个数从大到小输出即可;2.n为偶数情况,中位数为第n/2-1个数和第n/2个数的平均数,同时用double和int记录这个数,如果两个值相等,就输出整数,否则输出保留一位小...原创 2019-09-19 23:01:38 · 202 阅读 · 0 评论 -
CCF CSP 201903-2 二十四点
试题编号: 201903-2 试题名称: 二十四点 时间限制: 1.0s 内存限制: 512.0MB 思路:1.将四个数字和三个运算符分别用vector存储;2.每次遍历运算符vector,寻找’x’或者’/’,然后进行运算,如果没有找到,则用第一个运算符进行运算;3.每次运算后将参加运算的两个数字和运算符删去,在数字vector里对应位置插入运算结果;...原创 2019-09-22 18:20:10 · 244 阅读 · 0 评论 -
CCF CSP 201909-1 小明种苹果
题目: 试题编号: 201909-1 试题名称: 小明种苹果 时间限制: 2.0s 内存限制: 512.0MB 思路:1.用一个变量保存总苹果数,初始为0,然后加上除了n、m以外的其它输入即为最终苹果数;2.用数组保存每棵树的总疏果数,并以一个变量记录最多的疏果树的编号,并在往后遍历时比较、更新;代码:#include<iostream>...原创 2019-10-04 17:00:06 · 243 阅读 · 0 评论 -
CCF CSP 201909-2 小明种苹果(续)
题目: 试题编号: 201909-2 试题名称: 小明种苹果(续) 时间限制: 1.0s 内存限制: 512.0MB 思路:1.用一个数组drop[1001]记录每棵树是否掉苹果;2.在遍历每颗树时,用变量记录当前苹果个数,如果遍历到正数,则比较它和变量中值的大小,如果不相等,则说明掉了苹果,修改当前变量值,并修改数组中的标记;3.每遍历完一棵树,加上...原创 2019-10-04 17:14:19 · 2806 阅读 · 5 评论 -
CCF CSP 201812-1 小明上学
试题编号: 201812-1 试题名称: 小明上学 时间限制: 1.0s 内存限制: 512.0MB 题目背景: 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京州市的红绿灯是这样工作的:每盏红绿灯有红...原创 2019-10-06 21:13:19 · 260 阅读 · 0 评论 -
CCF CSP 201812-2 小明放学
试题编号:201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 题目背景: 汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。...原创 2019-10-06 21:42:30 · 371 阅读 · 0 评论 -
CCF CSP 201809-1 卖菜
试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜...原创 2019-10-09 23:08:36 · 104 阅读 · 0 评论 -
CCF CSP 201809-2 买菜
试题编号: 201809-2 试题名称:买菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]...[an,bn]在装车,对于...原创 2019-10-09 23:13:58 · 158 阅读 · 0 评论