CCF备考
CCF刷题总结
顾缘君兮
这个作者很懒,什么都没留下…
展开
-
isdigit(),isalpha(),toupper(),tolower()使用方法
isdigit:用于检查其参数是否为十进制数字字符。若参数c为阿拉伯数字0~9,则返回非0值,否则返回0。isalpha:判断字符ch是否为英文字母,若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0。toupper:功能是把小写字母变成大写字母tolower:功能是把大写字母变成小写字母头文件:#include <ctype.h>样例:#include <bits/stdc++.h>using namespace std;int main()原创 2020-09-12 22:45:04 · 224 阅读 · 0 评论 -
动态规划思想解守望者的逃离问题
动态规划思想解守望者的逃离问题题目描述恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。现在已知守望者的魔法原创 2020-09-12 21:13:09 · 210 阅读 · 0 评论 -
C++常用的输入函数总结
本文转载自:https://www.cnblogs.com/rixinren/archive/2010/03/23/1693052.html学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()附:cin.ignore();cin.get(转载 2020-09-12 13:34:11 · 3583 阅读 · 0 评论 -
C++字符串处理函数总结
本文转载自:https://www.cnblogs.com/lidabo/p/3487043.htmlrember this strncpy(a,b,5); a[5]='\0'; char a[10]; memset(a,'#',sizeof(a)); a[10]='\0'; 刚开始学C/C++时,一直对字符串处理函数一知半解,这里列举C/C++字符串处理函数 ,希望对初学者有一定的帮助。 C: char st[100]; 1.转载 2020-09-12 13:07:36 · 534 阅读 · 0 评论 -
递归选数问题
递归选数问题题目描述已知 n个整数 x1,x2,…,xn,以及1个整数k(k<n)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+19=297+12+19=383+12+19=34现在,要求你计算出和为素数共有多少种。例如上例,只有一种的和为素数:3+7+19=29输入格式键盘输入,格式为:n,k(1≤n≤20,k<n)x1,x2,…,x**n(1≤x**原创 2020-09-12 11:03:31 · 950 阅读 · 0 评论 -
准确详解:C/C++ float、double数据类型的表示范围及精度
本文转载自:https://blog.csdn.net/black_kyatu/article/details/79257346今天复习C++遇到了float、double数据类型的表示范围及精度问题,花费了一些时间重新梳理了一遍,鉴于网上很多文章写的并不清晰,并且有不少疏漏错误之处,特结合个人理解仔细整理如下。要弄清楚这个问题,首先要搞清楚浮点数在内存中的存储方式。浮点数,区别于定点数,指的是小数点位不确定的的数据类型,其原理是将一个浮点数a用两个数m(尾数)和e(指数)来表示:a = m × b^e转载 2020-09-11 21:56:19 · 6075 阅读 · 1 评论 -
C++memset()的使用(详细版)
本文转载自:https://blog.csdn.net/QFJIZHI/article/details/102530222?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-6-102530222.nonecase&utm_term=c++%E5%A4%B4%E6%96%87%E4%BB%B6%20memset函数介绍包含头文件:#include<string.转载 2020-09-10 22:53:16 · 1096 阅读 · 0 评论 -
CCF小技巧之万能头文件#include<bits/stdc++.h>
#include<bits/stdc++.h>包含了目前c++所包含的所有头文件有了它再也不用为记不住一些不常用的头文件而发愁了,这对于考试来说可是十分受用啊!!!写上这个,下面这些通通不用写!!!#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#include <deque>原创 2020-09-10 22:43:06 · 922 阅读 · 0 评论 -
动态规划+vector解旅行计划问题
动态规划+vector解旅行计划问题题目描述小明要去一个国家旅游。这个国家有#N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止。所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置。现在对于所有的i,都需要你为小明制定一条路线,并求出以城市ii为终点最多能够游览原创 2020-09-10 22:35:50 · 1025 阅读 · 0 评论 -
C++ vector容器小结
C++ vector容器小结什么是vector通俗的说,vector是一个可以存放任意类型数据的动态数组特性容器中的元素严格按照线性顺序排序,可以通过元素在序列中的位置访问对应的元素。提供了在序列末尾快速添加/删除元素的操作。动态分配内存。常用的函数vector() 创建一个空vectorpush_back(x) 在向量尾部添加一个元素xpop_back() 删除最后一个元素size() 返回向量中元素的个数begin() 向量中第一个元素end() 向量中最后一个原创 2020-09-10 20:47:47 · 90 阅读 · 0 评论 -
记忆化搜索算法
本文转载自:https://www.cnblogs.com/jyroy/p/10274414.html算法:记忆化搜索算法一:简述 记忆化搜索实际上是递归来实现的,但是递归的过程中有许多的结果是被反复计算的,这样会大大降低算法的执行效率。 而记忆化搜索是在递归的过程中,将已经计算出来的结果保存起来,当之后的计算用到的时候直接取出结果,避免重复运算,因此极大的提高了算法的效率。二:应用实例题目描述对于一个递归函数w(a,b,c)如果 a<=0 or b<=0 or c<转载 2020-09-10 15:59:02 · 889 阅读 · 0 评论 -
拓扑排序详解
拓扑排序详解本文转载自https://blog.csdn.net/qq_35644234/article/details/60578189前言The time of test,family is best.Name:WillamTime:2017/3/61、拓扑排序的介绍对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。拓扑排序对应施工转载 2020-09-09 10:17:34 · 943 阅读 · 0 评论 -
动态规划加分二叉树问题
动态规划加分二叉树问题题目描述设一个 n个节点的二叉树tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 ii 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree 的左子树的加分 X subtree 的右子树的加分 + subtree 的根的分数。若某个子树为空,规定其加分为 1,叶子的加分就是叶节点本身的分数。不考虑它的空子树原创 2020-09-08 20:13:28 · 1007 阅读 · 0 评论 -
01背包思想的采药问题
01背包思想的采药问题题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入格式第一行有 2个整数 1≤T≤1000)和 M(1≤M≤原创 2020-09-08 10:35:06 · 77 阅读 · 0 评论 -
乒乓球问题
乒乓球问题题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。题目描述华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。比原创 2020-09-08 09:25:05 · 188 阅读 · 0 评论 -
高精度生成数问题
高精度生成数问题题目描述给出一个整数 n(n<10^30)和 k 个变换规则(k≤15)。规则:一位数可变换成另一个一位数。规则的右部不能为零。例如:n*=234。有规则(k=2):2->53->6上面的整数 234 经过变换后可能产生出的整数为(包括原数):234534264564共 4 种不同的产生数。现在给出一个整数 n和 k个规则。求出经过任意次的变换(0次或多次),能产生出多少个不同整数。仅要求输出个数。输入格式第一行两个整数 n,原创 2020-09-07 16:56:43 · 271 阅读 · 0 评论 -
递归解单词接龙问题
递归解单词接龙问题题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连。输入格式输入的第一行为一个单独的整数n(n≤20)表示单词数,以下n 行每行有一个单词,输入的最后一行为一个单个字符,表示原创 2020-09-06 16:55:02 · 333 阅读 · 0 评论 -
高精度乘积最大问题
高精度乘积最大问题题目描述今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰9090周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:有一个数字串:312, 当N=3,K=1原创 2020-09-04 12:33:45 · 270 阅读 · 0 评论 -
C++高精度算法
C++高精度算法本文转载自:http://blog.sina.com.cn/s/blog_4fdb102b010087ng.html前言:由于计算机运算是有模运算,数据范围的表示有一定限制,如整型int(C++中int 与long相同)表达范围是(-231~231-1),unsigned long(无符号整数)是(02^32-1),都约为几十亿.如果采用实数型,则能保存最大的double只能提供1516位的有效数字,即只能精确表达数百万亿的数.因此,在计算位数超过十几位的数时,不能采用现有类型,只能自己转载 2020-09-03 11:09:13 · 1561 阅读 · 0 评论 -
递归求先序排列
求先序排列题目描述给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。输入格式2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。输出格式1行,表示一棵二叉树的先序。输入输出样例输入 #1BADCBDCA输出 #1ABCD解题思路首先要知道这些遍历的顺序:前序遍历根左右,中序遍历左根右,后序遍历左右根。所以求前序遍历就是不断的找根节点输出。以样例为例做一个简单的说明。中序遍历:BADC,后序遍历:BDCA根据后序原创 2020-09-02 22:13:34 · 216 阅读 · 0 评论 -
动态规划统计单词个数
动态规划统计单词个数题目描述给出一个长度不超过 200的由小写英文字母组成的字母串(该字串以每行 20个字母的方式输入,且保证每行一定为 20个)。要求将此字母串分成 k 份,且每份中包含的单词个数加起来总数最大。每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串 this 中可包含 this 和 is,选用 this 之后就不能包含 th。单词在给出的一个不超过 6个单词的字典中。要求输出最大的个数。输入格式每组的第一行有两个正整数 p,k。 p 表示字串的行原创 2020-09-02 14:40:12 · 659 阅读 · 4 评论 -
动态规划解导弹拦截问题
动态规划解导弹拦截问题题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式1行,若干个整数(个数≤100000)输出原创 2020-09-01 00:48:46 · 1565 阅读 · 0 评论 -
动态规划+深搜 解邮票面值设计问题
动态规划+深搜 解邮票面值设计问题题目描述给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1至MAX之间的每一个邮资值都能得到。例如,N=3,K=2,如果面值分别为1分、4分,则在1分~6分之间的每一个邮资值都能得到(当然还有8分、9分和12分);如果面值分别为1分、3分,则在1分~7分之间的每一个邮资值都能得到。可以验证当N=3,K=2时,7分就是可以得到的连续的邮资最大值,所以MAX=7,面值原创 2020-08-31 00:32:40 · 562 阅读 · 0 评论 -
动态规划解过河卒问题
动态规划解过河卒问题题目描述棋盘上 A 点有一个过河卒,需要走到目标 B点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点 (0, 0)、B点 (n, m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 A点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别表示 B点坐标和马的坐标。输出格式一个整数,表示所原创 2020-08-29 18:09:24 · 1170 阅读 · 0 评论 -
贪心算法解旅行家的预算问题
贪心算法解旅行家的预算问题题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。输入格式第一行,D1,C,D2,P,N。接下来有N行。第i+1行,两个数字,油站i离出发点的距离Di原创 2020-08-28 20:54:12 · 1552 阅读 · 0 评论 -
动态规划解方格取数问题
动态规划解方格取数问题题目描述设有 N×N的方格图 (N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。如下图所示(见样例):A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0原创 2020-08-27 22:16:19 · 690 阅读 · 0 评论 -
CCF 202006-2稀疏向量 防超时
CCF 202006-2稀疏向量题目描述解题思路这道题比较简单,只要把两个向量对应不为零的项乘积加和就可以了。对于这道题来说主要问题是运行超时的问题。如果要用cin输入的话,我们需要加上ios::sync_with_stdio(false);来提升输入效率。我们选择map存储数据。代码很短,如下所示。详细代码#include <iostream>#include <map>using namespace std;int main() { ios::syn原创 2020-08-26 21:16:56 · 339 阅读 · 0 评论 -
动态规划解传纸条问题
动态规划解传纸条问题题目描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个 m行 n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 (1,1),小轩坐在矩阵的右下角,坐标 (m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。在活动进行中,小渊希望给小轩传递一张纸条,同时希望原创 2020-08-25 17:56:17 · 1208 阅读 · 0 评论