2018年为准备CCF CSP的第一遍刷题
基础题型,以及CCF CSP历年题的个人理解等
文三路张同学
在读浙大计算机博士,研究方向3D vision,欢迎大家关注我:https://github.com/Ruiyuan-Zhang/
展开
-
简单理解【链式前向星】
知识主要来自https://malash.me/200910/linked-forward-star/前向星前向星是一个特殊的边集数组,我们将边集数组中的每条边按照起点排序(必要时起点相同的边再按终点排序),并记录下以某个点为起点的所有边的在数组中的起始位置和存储长度,前向星就构造好了。len[i]记录所有以i为起点的边在数组中的存储长度head[i]记录以i为起点的边集在数组中的...转载 2018-08-30 08:56:51 · 1322 阅读 · 0 评论 -
Dijkstra算法 ccf 201609-4 试题名称: 交通规划
问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统。 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成高速铁路。现在,请你为G国国王提供一个方案,将现有的一部分铁路改造成高速铁路,使得任何两个城市间都可以通过高速铁路到达,而且从所有城市乘坐高速铁路到首都的最短路程和原来一样长。请你告诉G国国王在这些条...原创 2018-08-22 20:24:18 · 844 阅读 · 0 评论 -
201509-4 试题名称: 高速公路 tarjan算法 求解有向图强连通分量
问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。 现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高...原创 2018-08-16 18:56:26 · 610 阅读 · 0 评论 -
201503-4 试题名称: 网络延时 80分
问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为1的交换机为根交换机,层级为1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加1。所有的终端电脑都直接连接到交换机上。 当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传...原创 2018-08-16 16:23:59 · 426 阅读 · 0 评论 -
201412-4 试题名称: 最优灌溉 并查集和最小成本树Kruskal算法应用
问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉。 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉。 现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠...原创 2018-08-16 10:25:56 · 351 阅读 · 0 评论 -
201503-3 试题名称 节日(c++输出)
问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。 现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期。 提示:关于闰年的规则:年份是400的整数倍时是闰年,否则年份是4的倍数并且不是100的倍数时是闰年,其他...原创 2018-08-13 14:51:57 · 626 阅读 · 0 评论 -
201709-4 试题名称: 通信网络100分
某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息。信息可以通过中转的方式进行传递,即如果a能将信息传递到b,b又能将信息传递到c,则a能将信息传递到c。一条信息可能通过多次中转最终到达目的地。 由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接...原创 2018-08-08 15:42:40 · 430 阅读 · 3 评论 -
201409-4 试题名称:最优配餐
问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务。随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。 方格图中的线表示可以行走的道路,相邻两个格点的距离为1。栋栋要送餐必须走可以行走的道路,而...原创 2018-08-15 16:47:16 · 538 阅读 · 2 评论 -
201712-4 试题名称: 行车路线 80分
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航。 小芳将可能的道路分为大道和小道。大道比较好走,每走1公里小明会增加1的疲劳度。小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度。 例如:有5个路口,1号路口到2号路口为小道,2号路口到3号路口为小道,3号路口到4号路口为大道,4号路口到5号路口为小道,相邻路口之间的距离都是2公里。如果小...原创 2018-08-17 20:57:25 · 1200 阅读 · 0 评论 -
201312-4 试题名称: 有趣的数 优美的动态规划
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。 因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。 请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只...原创 2018-08-15 12:57:35 · 772 阅读 · 4 评论 -
201509-3 试题名称: 模板生成系统 90分
问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统。 模板是包含特殊标记的文本。成成用到的模板只包含一种特殊...原创 2018-08-12 17:55:53 · 406 阅读 · 0 评论 -
201509-2 试题名称: 日期计算(里面有闰年的判断方法)
问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天。满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍; 2) 年份是400的整数倍。(很重要,但我总是记不住,ccf这次一定要记住!!!)输入格式 输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。 输入的第二...原创 2018-08-12 15:53:15 · 558 阅读 · 0 评论 -
201604-4 试题名称: 游戏
问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列。 方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如果小明控制的角色到达一个方格的时候方格是危险的,则小明输掉了游戏,如果小明的角色到达了第n行第m列,则小明过关。第一行第一列和第n行第m列永远都是安全的。 每个单位时间,小明的角色必须向上下左右...原创 2018-08-17 16:31:10 · 480 阅读 · 0 评论 -
int最大值表示方法
int a=(1<<31)-2;int b=0x7fffffff;原创 2018-08-20 13:32:08 · 11444 阅读 · 3 评论 -
hdoj最少拦截系统 【贪婪算法】
http://acm.hdu.edu.cn/showproblem.php?pid=1257思路贪婪算法,从一个能点开始,找到所能贪掉的所有点。继续寻找能贪的点,并继续执行该操作。AC代码#include<iostream>#include<iomanip>using namespace std;int a[100006];int main(){...原创 2018-09-02 20:13:02 · 368 阅读 · 0 评论 -
memset 赋初值为无穷大和无穷小
转自https://blog.csdn.net/yskyskyer123/article/details/52277927如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在...转载 2018-08-29 17:27:04 · 990 阅读 · 0 评论 -
map用法
map整理: https://blog.csdn.net/zhouzhenhe2008/article/details/76649158map find函数:返回找到的位置上的迭代器。 count函数:返回找到的key的数量,只能为1或0http://acm.hdu.edu.cn/showproblem.php?pid=1004#include<...原创 2018-08-24 17:30:05 · 280 阅读 · 0 评论 -
201709-5 试题名称: 除法
问题描述 小葱喜欢除法,所以他给了你N个数a1, a2, ⋯, aN,并且希望你执行M次操作,每次操作可能有以下两种: 给你三个数l, r, v,你需要将al, al+1, ⋯, ar之间所有v的倍数除以v。 给你两个数l, r,你需要回答al + al+1 + ⋯ + ar的值是多少。输入格式 第一行两个整数N, M,代表数的个数和操作的次数。 接下来一行N个整数,代...原创 2018-08-22 11:12:01 · 666 阅读 · 0 评论 -
最大子段和
最大子段和的动态规划算法我们在选择一个元素a[j]的时候,只有两种情况,将a[i]至a[j-1]加上,或者从a[j]以j为起点开始。我们用一个数组dp[i]表示以i为结束的最大子段和,对于每一个a[i],加上dp[i-1]成为子段,或以a[i]开始成为新段的起点。因为我们只需要记录dp值,所以复杂度是O(n)。这就是最大子段和的动态规划算法。我们甚至不需要dp数组,只需要定义一个dp变量,因...原创 2018-08-24 15:47:26 · 2299 阅读 · 0 评论 -
math
#include <math.h>double floor (double x) // 对x进行向下取整double ceil (double y) // 对y进行向上取整原创 2018-08-21 15:12:19 · 424 阅读 · 0 评论 -
YJJ's Salesman(树状数组,离散化,dp)
YJJ's SalesmanTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 253 Accepted Submission(s): 62 Problem DescriptionYJJ is a salesman who...转载 2018-08-28 10:50:50 · 442 阅读 · 0 评论 -
unique用法
https://www.cnblogs.com/hua-dong/p/7943983.html转载 2018-08-28 09:13:58 · 21480 阅读 · 0 评论 -
ccf 201612-2 工资结算
#include<iostream>using namespace std;double f(double m){ if(m<=1500){ return m*3/100; }else if(m<=4500){ return f(1500)+(m-1500)/10; }else if(m<=9000){ return f(4500)+(m-4...原创 2018-08-23 16:40:08 · 621 阅读 · 0 评论 -
I Hate It(hdoj 树状数组求区间最大值)
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1754题解参考于:https://blog.csdn.net/mosquito_zm/article/details/76422738依旧不懂时间复杂度是怎么求得的。不懂为啥一开始的时间复杂度为O(n*log n)代码如下/**** 不会就抄抄别人的https://blog.csdn.n...转载 2018-08-27 19:50:08 · 598 阅读 · 0 评论 -
201312-5 试题名称: I’m stuck!
问题描述 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思: '#': 任何时候玩家都不能移动到此方格; '+': 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格; '-': 当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非'#'方格移...原创 2018-08-20 15:53:04 · 379 阅读 · 0 评论 -
201512-3 试题名称:画图
问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。 ..____.____..____..____...___.. ./.___/.___||.._.\|.._.\./._.\. |.|...\___.\|.|_).|.|_).|.|.|.| |.|___.___)...原创 2018-08-12 15:36:57 · 767 阅读 · 0 评论 -
ccf 201712-2 试题名称: 游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友...原创 2018-08-07 13:32:03 · 387 阅读 · 0 评论 -
二维数组 sort函数用法
https://blog.csdn.net/leelitian3/article/details/79293058转载 2018-08-06 11:28:33 · 8528 阅读 · 0 评论 -
公共钥匙盒
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙。 每次取钥匙的时候,老师们都会找到自己所需要的钥...原创 2018-08-06 11:27:29 · 742 阅读 · 2 评论 -
ccf 201703-3 试题名称: Markdown 60分
问题描述 Markdown 是一种很流行的轻量级标记语言(lightweight markup language),广泛用于撰写带格式的文档。例如以下这段文本就是用 Markdown 的语法写成的: 这些用 Markdown 写成的文本,尽管本身是纯文本格式,然而读者可以很容易地看出它的文档结构。同时,还有很多工具可以自动把 Markdown 文本转换成 HTML 甚至 Word、PDF...原创 2018-08-09 17:58:27 · 367 阅读 · 0 评论 -
c++ string int转化 #define INTMAX 0x7fffffff
https://www.cnblogs.com/gaobw/p/7070622.html#define INTMAX 0x7fffffff转载 2018-08-09 16:54:33 · 1095 阅读 · 0 评论 -
高精度减法
#include<iostream>#include<string>using namespace std; void re(string& x){ string str; for(int i=0;i<x.length();i++){ str+=x[x.length()-1-i]; } ...原创 2018-07-19 11:16:32 · 1098 阅读 · 0 评论 -
高精度乘法
问题http://codevs.cn/problem/3117/ #include<iostream> #include<string> using namespace std; string a,b; string jg[10];//从0-9结果集 string addtion(string a,string b){ //翻转、补零操作 ...原创 2018-07-18 18:03:55 · 376 阅读 · 0 评论 -
高精度基础 加法
#include<iostream> #include<string> using namespace std; string a,b; void re(){ //翻转、补零操作 int max_length=a.length()>b.length()? a.length():b.length(); string str; ...原创 2018-07-18 16:10:48 · 312 阅读 · 0 评论 -
四色问题 天梯 回溯
问题http://codevs.cn/problem/1116/#include<iostream> #include<cstring> using namespace std; int arr[8][8]; int n; int num=0; int se[8];//代表第几个位置需要放置的颜色 bool ifcou(int x,int s){//判...原创 2018-07-18 15:33:58 · 896 阅读 · 0 评论 -
n皇后
/* 需要注意,判断x,y位置是否有棋子时,x>y 与x<y时情况不一样,需要及时跳出循环。 */ #include<iostream> #include<cstring> using namespace std; int n; int chess[14][14]; int num=0; boo...原创 2018-07-18 15:03:51 · 254 阅读 · 0 评论 -
记录一下还没有完成的题
http://ysusoft.openjudge.cn/acm0531/6/成语接龙题https://blog.csdn.net/wretchedme/article/details/48056175原创 2018-07-18 13:57:40 · 229 阅读 · 0 评论 -
机器翻译
总时间限制:1000ms内存限制:262144kB描述VariantF的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这...原创 2018-07-17 19:50:22 · 2296 阅读 · 0 评论 -
ISBN号码 201312-2 ccf
问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第...原创 2018-08-06 11:53:02 · 230 阅读 · 0 评论 -
ccf 201604-2 试题名称: 俄罗斯方块
俄罗斯方块问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个新的由4个小方块组成的板块从方格图的上方落下,玩家可以操作板块左右移动放到合适的位置,当板块中某一个方块的下边缘与方格图上的方块上边缘重合或者达到下边界时,板块不再移动,如果此时方格图的某...原创 2018-08-10 14:31:16 · 1014 阅读 · 0 评论