
CCF
文章平均质量分 65
快乐刷题,提升算法设置能力。
繁星蓝雨
Happy coding!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
工资计算(201612-2/CCF)———附带思路和完整代码
文章目录0 结果1 题目2 思路3 实现0 结果1 题目问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元; 2) A中不超过1500元的部分,税率3%; 3) A中超过1500元未超过4500元的部分,税率10%; 4)原创 2021-01-08 21:54:42 · 552 阅读 · 0 评论 -
期末预测之安全指数(202012-2/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路2.1 暴力求解2.2 简化3 代码3.1 暴力求解3.2 简化0 效果此为暴力求解的算法,没有通过200~105的数据测试。1 题目样例1输入60 01 01 13 15 17 1样例1输出3样例2输入85 15 05 02 13 04 0100000000 11 0样例2输出1000000002 思路2.1 暴力求解用vector存储输入的每个y和result值,待全部输入完成后,使用二重循环遍历依次遍历原创 2021-01-03 10:53:50 · 2438 阅读 · 8 评论 -
期末预测之安全指数(202012-1/CCF)———附带思路和完整代码
文章目录0 结果1 题目2 思路3 实现0 结果测试发现使用int存储累加和,不会造成答案错误,可以说这题基本上没有坑。1 题目样例1输入62 6010 1000 700 0-10 5010 60样例1输出1220样例2输入2-10 100-1 15样例2输出02 思路对输入的数字进行相乘后相加,最后当结果大于0时,输出累加和,否则,输出0.3 实现#include <cstdio>int main(){ int n; lon原创 2021-01-02 23:01:50 · 886 阅读 · 2 评论 -
二十四点(201903-2/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:仔细读题 如何把处理运算优先级1 题目2 思路1 根据题目分别读入数字和符号存储在数组中;2 根据符号,来讨论计算的优先级;当第一个符号为+,-,第二个符号为x/时,优先计算第二个数和第三数的运算,得到结果ans当第三个符号为x/时,优先计算ans和第四个数的运算否则按照先后顺序计算当第一符号为*/时,计算第一个数和第二数的运算,得到结果tempNum1如果第二个符号是±,第三个符号为x/,优先计算第三个数和第四原创 2020-10-30 19:13:41 · 505 阅读 · 0 评论 -
小明种苹果(续)(201909-2/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:如何处理环1 题目2 思路1记录输入的每次值,按N和M依次输入数据,2 当输入树的操作数据时,如果是第一次输入,则临时存储数据A为tempT,每当输入A小于0时,累加到tempT上,如果A大于0并且不是第一次输入,则与tempT比较,如果不同,则存在掉落的情况,记hashTable[num]为true【num为树的编号,从0开始】,并且重置tempT为刚刚输入的A3 每行输入完后,把tempT累加到T上,如果hashTabl原创 2020-10-24 00:13:15 · 341 阅读 · 0 评论 -
回收站选址(201912-2/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:明白评分标准 数据结构的选用1 题目2 思路首先明白的题目的评分是怎么评的。评分标准为:当点(x,y)的(x+1,y),(x−1,y),(x,y+1),(x,y−1)(x+1,y),(x-1,y),(x,y+1),(x,y-1)(x+1,y),(x−1,y),(x,y+1),(x,y−1)都存在时,才开时评分,每当(x+1,y+1),(x+1,y−1),(x−1,y+1),(x−1,y−1)(x+1,y+1),(x+1,y-1),(原创 2020-10-21 23:46:27 · 472 阅读 · 0 评论 -
小明上学(201812-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:仔细读题1 题目题目背景 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r) 秒内亮红灯,车辆不许通过;[r, r+g原创 2020-10-10 23:50:58 · 664 阅读 · 0 评论 -
小中大( 201903-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:四舍五入小数点一位,输出个数(整数输出整数,小数输出小数),情况分类1 题目2 思路最大最小的数在输入的最开始和最后一个,中位数:当n为偶数时,是第一个n/2 - 1和n/2个数的平均数;当n为奇数时,是第n/2个数特殊情况:当n为1时,三个数都为输入的第一个数;3 代码#include<cstdio>#include<cmath>#include<math.h>#in原创 2020-10-10 23:29:10 · 328 阅读 · 0 评论 -
卖菜( 201809-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:认真读题,特殊情况处理1 题目2 思路当n = 2时,为特殊情况,第一个和第二个输出数的值都两个数的平均值;当n > 2时,对第一个数和最后两个个数特殊处理第一个数的输出等于,当输入玩第二个数后,第一个和第二个数区平均为输出值最后一个数输入时,倒数第二个数为最后输入的三个数的平均值,最后一个数为最后输入的两个数的平均值其余情况,输出到目前为止最后三个输入数的平均值作为上一个数的输出。注意:为了节省空间,因为计算只需用原创 2020-10-10 21:55:53 · 430 阅读 · 0 评论 -
称: 跳一跳(201803-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:认证读题1 题目2 思路如果输入为1,则分数加1;如果输入为2,并且之前输入也为2,则分数加上2的个数的倍数,否则就只加上2.3 代码#include<cstdio>int main(){ int n, tempN = -1, ans = 0, times = 0; while(scanf("%d", &n) != EOF){ if(n == 1){ ans += 1; times = 0;原创 2020-10-10 17:34:26 · 447 阅读 · 0 评论 -
最小差值(201712-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。输入格式 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔。输出格式 输出一个整数,表示答案。样例输入51 5 4 8 20样例输出1样例说明 相差最小的两个数是5和4,它们之间的差值是1。样例输入59 3 6 1 3样例输出0样例说明 有两个相同的数3,它们之间的差值是0原创 2020-10-10 15:05:09 · 1662 阅读 · 0 评论 -
打酱油(201709-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果递归DFS:1 题目2 思路本体是一道完全背包问题,解决方法有递归(剪枝)。递归(n为钱,count为酱油个数):递归边界:n==0递归式子:DFS(n - 10, count + 1); //酱油10块钱一瓶DFS(n - 30, count + 4);//每买3瓶送1瓶DFS(n - 50, count + 7);//每买5瓶送2瓶3 代码递归:#include<cstdio>int ans = 0;原创 2020-10-10 14:53:44 · 531 阅读 · 0 评论 -
分蛋糕(201703-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路每次计算数输入值的累加值,如果大于等于k,则分蛋糕次数加1,特判最后一次输入,无论累加值是否满足大于等于k,分蛋糕次数都加1。3 代码#include<cstdio>int main(){ int n, k, sum = 0, ans = 0; scanf("%d%d", &n, &k); while(n--){ int num; scanf("%d", &num); su原创 2020-10-10 10:55:04 · 564 阅读 · 0 评论 -
中间数(201612-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:如何判断为中间数1 题目问题描述 在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式 输入的第一行包含了一个整数n,表示整数序列中数的个数。 第二行包含n个正整数,依次表示a1, a2, …, an。输出格式 如果约定序列的中间数原创 2020-10-10 10:36:17 · 427 阅读 · 0 评论 -
最大波动(201609-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:认证读题1 题目2 思路保存上次的输入,每次计算本次输入和上次输入差的绝对值dis,如果大于之前计算的绝对值dis,则更新dis。3 代码#include<cstdio>#include<math.h>#include<limits.h>int main(){ int n, contrastNum = -1, dis = INT_MIN; scanf("%d", &n); whil原创 2020-10-10 10:18:18 · 420 阅读 · 0 评论 -
折点计数(201604-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目评测用例规模与约定 所有评测用例满足:1 ≤ n ≤ 1000,每天的销售量是不超过10000的非负整数。2 思路每次存储上一次输入的值,与这次输入的值进行比较(这次输入的值减上次输入的值),如果两者的差值和上一次差值异号,则属于折点。属性值值值值值值值输入值num5412364上次输入值contrastNum541236变化趋势trend-1-1+1原创 2020-10-10 10:04:07 · 370 阅读 · 0 评论 -
数列分段(201509-1)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路方法一:对于输入的数字使用除基(基数为10)取余数法,累加余数值,每次运算完后,原数除以10(相当于右移一位)。方法二:将输入的数字转为字符串,然后从高到低或者从低到高累加每位的值。3 代码法一:#include<cstdio>int main(){ int n, ans = 0; scanf("%d", &n); do{ ans += (n % 10); n /= 10;原创 2020-10-10 08:55:14 · 596 阅读 · 0 评论 -
数列分段(201509-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:仔细读题1 题目2 思路每次存储输入的值,下一次输入时,进行对比,如果不同数列段数加1。【数列段数初值为1,因为如果全部数字都是相同的,那就没有不同的段数对比】3 代码#include<cstdio>int main(){ int n, num, contrastNum = -1, ans = 1; scanf("%d", &n); while(n--){ scanf("%d", &num);原创 2020-10-10 08:23:37 · 464 阅读 · 0 评论 -
图像旋转(201503-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路通过观察案例可知:原数组(0,0),(0,1),(0,2)(1,0),(1,1),(1,2)输出变成了(2,0),(1,0),(0,0)(2,1),(1,1),(0,1)也就是原先的第一维(行)变成了第二纬度(列),第二维度(列)变成了第一维度(行),另外每一行按照行数从高到低输入,至此就可以书写算法了。3 代码#include<cstdio>const int MAXN = 1010;int A[原创 2020-10-10 07:53:48 · 370 阅读 · 0 评论 -
门禁系统(201412-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难度:读题仔细1 题目2 思路使用hash映射表,每出现一次,数组加一并输出。3 代码#include<cstdio>const int MAXN = 1010;int hashTable[MAXN] = {0};int main(){ int n, ans = 0; scanf("%d", &n); while(n--){ int num; scanf("%d", &num); hashT原创 2020-10-09 23:33:48 · 751 阅读 · 0 评论 -
相邻数对(201409-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路使用哈希映射记录每个数是否出现,每输入一个数就查询它的+1或者-1是否出现,如果有则答案个数加1.注意: 判断+1和-1时,要分开判断,不然就会出现少判断的情况,入1、3、2这种情况。3 代码#include<cstdio>#include<map>const int MAXN = 10010;//int hashTable[MAXN] = {0};std::map<int, int&原创 2020-10-09 22:23:45 · 292 阅读 · 0 评论 -
相反数(201403-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:时间、空间复杂度优化1 题目2 思路使用哈希映射的方法,对数字num的绝对值abs(num)进行次数累加hashTable[abs(num)]++,因为每个数输入的都不同,因此hahTable值为2时,相反数的个数累加,最后输出这个值即可。3 代码#include<cstdio>#include<math.h>const int MAXN = 510;int hashTable[MAXN] = {0};原创 2020-10-09 18:44:47 · 348 阅读 · 0 评论 -
出现次数最多的数( 201312-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果难点:认真读题,优化时间或者空间复杂度。1 题目2 思路使用hash映射存储数字出现的次数,然后对每次输入的值num进行hashTable[num]++来计次,如果hashTable[num]次数大于minNum(初始值为0),则minNum = hashTable[num],ans = num;如果hashTable[num]次数等于minNum(初始值为0)且num小于ans,则minNum = hashTable[num],ans =原创 2020-10-09 18:14:46 · 266 阅读 · 0 评论 -
小明种苹果(201909-1/CCF)———附带思路和完整代码
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路1 首先设置T(初值为0,方便累加)、P(初值为INT_MAX,方便比较)、k(初值为0或者其他)三个变量为最终需要的结果,cnt为苹果树的编号(初值为0);2 对于每行进行输入的开始时,对cnt++;输入的苹果个数和掉的数量,使用tempP进行+=运算,运算的结果tempP再与T进行+=运算;运算结果tempP与P进行比较,如果比P小,则k = cnt, P = tempP;3 最后输出T、k、P。注⚠️:原创 2020-10-08 12:43:44 · 634 阅读 · 0 评论 -
CCF刷题遇坑笔记————后期不断完善
文章目录0 背景1 pair错误2 unordered_map错误0 背景最近刷ccf的时候,总是会遇到在Dev CPP上编译、运行都没有问题,结果一复制到ccf的网页编译器中,一提交就爆出编译错误(天啦噜,什么上古编译器??!! )。结果就只有逐语句注释,来寻找编译出错的地方和原因,此文就是用于记录这样的错误以及解决办法。1 pair错误如果使用#include<vector>#include<utility>std::vector<std::pair<原创 2020-10-05 11:47:48 · 1567 阅读 · 5 评论 -
稀疏向量(202006-2/CCF)————附思路和完整代码
文章目录0 效果1 题目2 思路2.1 优化:3 代码0 效果使用unordered_map(未排序key的散列map,速度比map快很多)【实际运行的速度比map满????,这个就不知道编译怎么执行的了,可能是使用namespace导致的】使用map难点:性能优化,尽量减少时间和空间复杂度。1 题目2 思路存储两个两个稀疏向量,如果两个稀疏向量相同的index上都有value(不为0),那么就用两个值相乘,计算所有这样乘积的和。2.1 优化:1 使用vector来优化存储第一个原创 2020-10-05 11:37:33 · 364 阅读 · 0 评论 -
点亮数字人生( 202009-3/CCF)———附带思路和完整代码(邻接表、邻接矩阵)
文章目录0 效果1 题目2 思路3 代码4 测试数据0 效果邻接表:邻接矩阵:空间复杂度:邻接表比邻接矩阵少了接近1/4的大小。1 题目2 思路数字电路抽象出来就是有向图,中间的过程是模拟作为边的入度的点使用位计算其值作为该点的权值,最后输入的结果就是类似于计算点权重。步骤:1 构建图(邻接表、邻接矩阵),【构建的时候,就计算每个点的入度】;2 存储需要测试的输入、输出数据;3 使用拓扑排序来判断是否电路(有向图)是否成环;4 使用类似与拓扑排序的方法来从前向后依次计算每个元原创 2020-10-04 00:22:19 · 1908 阅读 · 0 评论 -
风险人群筛查【202009-2/CCF】————附带完整代码和思路
文章目录0 结果1 题目2 思路3 代码0 结果1 题目样例输入15 2 6 20 40 100 80100 80 100 80 100 80 100 80 100 80 100 8060 50 60 46 60 42 60 38 60 34 60 3010 60 14 62 18 66 22 74 26 86 30 10090 31 94 35 98 39 102 43 106 47 110 510 20 4 20 8 20 12 20 16 20 20 20Data样例输出1原创 2020-09-30 11:12:40 · 1014 阅读 · 2 评论 -
称检测点查询【202009-1/CCF】————附带完整代码和思路
文章目录0 效果1 题目2 思路3 坑4 解决方法0 效果1 题目题目背景2020 年 6 月 8 日,国务院联防联控机制发布《关于加快推进新冠病毒核酸检测的实施意见》,提出对“密切接触者”等八类重点人群“应检尽检”,其他人群“愿检尽检”。问题描述某市设有 个核酸检测点,编号从 到 ,其中 号检测点的位置可以表示为一个平面整数坐标。为方便预约核酸检测,请根据市民所在位置 ,查询距其最近的三个检测点。多个检测点距离相同时,编号较小的视为更近。输入格式输入共 行。第一行包含用空原创 2020-09-29 00:46:40 · 819 阅读 · 0 评论 -
线性分类器【202006-1/CCF】————附带完整代码和思路
文章目录0 结果1 题目2 思路3 代码实现0 结果1 题目2 思路1 把A类的点坐标带入直线方程式(k1+k2X+k3Y)中,如果计算(并记录值的正负)出的值全部大于或者小于(由于点不落在直线上,因此不存在为0的情况),那么执行步骤2,否则,输出No,结束;2 计算B类的点坐标带入直线方程式(k1+k2X+k3Y)中的值,如果计算出的值的符号和A类点的计算出的符号同号,输出No,结束,否则继续计算;3 计算完两类点,但是没有输出No,则输出Yes。3 代码实现#include&原创 2020-09-27 00:18:01 · 556 阅读 · 0 评论 -
报数( 201912-1/CCF认证)——附带思路和代码
文章目录1 题目2 解析3 参考代码1 题目2 解析读题仔细,问的是每个人跳过的次数,不是第几轮被跳过。求解方法:求余为0来判断是否能整数7,用类似于进制转换的方法求某一位是7(或者使用字符串的方法,用find成员函数)3 参考代码#include <cstdio>#include <cstring>#include <string>usin...原创 2020-04-10 23:38:30 · 456 阅读 · 0 评论