
CCF
莫愁-前路
这个作者很懒,什么都没留下…
展开
-
CCF 20140903 字符串匹配
思路:较简单,暴力破解+string类。精确匹配,用string类中的find函数即可;模糊匹配,先将需要匹配的字符转为小写字符,在用find函数。>大写转小写字符:s += 'a' -'A'原创 2020-04-24 10:14:36 · 176 阅读 · 2 评论 -
CCF 201403-3 命令行选项
思路:每行的命令用getline( )读入,读入后把其输入到streamstring中,每次以空格分隔成字符串,判断每一个字符串是否合法。最后把合法的选项存入到map中,map正好符合题意原创 2020-04-23 21:30:38 · 195 阅读 · 0 评论 -
CCF 20131203 最大的矩形
思路:暴力法。枚举以每一个hi为高,统计在其左边和右边高于(含等于)hi的矩形个数为count,计算出每个矩形的面积tmp=hi*count,标记出其最大值即可。原创 2020-04-23 10:28:15 · 96 阅读 · 0 评论 -
CCF 20131202 ISBN号码
题目简单,用string类就可以搞定原创 2020-04-22 23:59:02 · 161 阅读 · 0 评论 -
CCF 20131201 出现次数最多的数
思路:模板。用map统计一串数中每个数出现的次数,然后把map存到vector中,对vector进行排序,选出出现次数最多的数。常见套路,多次考察。原创 2020-04-22 22:19:03 · 117 阅读 · 0 评论 -
CCF 20140302 窗口
思路:以窗口为结构体,包含窗口id,所在层数layer,x1,x2,y1,y2。将所有窗口按层数从大到小排序,为了方便从最上层筛选点击的窗口;筛选到符合条件的窗口,break,在找到符合条件之前的所有窗口都减一。#include <iostream>#include <algorithm>using namespace std;const int N = 1...原创 2020-04-22 21:49:06 · 123 阅读 · 0 评论 -
CCF 20140301 相反数
思路:利用map可以容易实现统计一串数中每一个数出现的次数,由于题目中的数都不相等且不为0,故对数取绝对值进行统计,如果map[v]==2则计数器++。原创 2020-04-22 16:53:53 · 123 阅读 · 0 评论 -
CCF 20140902 画图
思路:枚举法。先将所有坐标对应的小正方形标记为0,之后标记范围内所有的小正方形为1。最后统计范围内所有的flag == 1的小正方形。原创 2020-04-22 13:51:15 · 126 阅读 · 0 评论 -
CCF 20141202 Z字形扫描
思路:暴力模拟,复杂度O(n^3)。Z字形扫描时,i + j == t,循环遍历所有的t的可能值即可t在[0…2*(n-1)]范围内,i,j在0…n。t是偶数时,先打印行;t是奇数时,先打印列。#include <iostream>using namespace std;const int N = 500;int data[N][N];int main(){ ...原创 2020-04-22 10:33:08 · 119 阅读 · 0 评论 -
CCF 20141201 门禁系统
思路:这种串数字统计每个数字出现次数的题型都可以用map做,简单,CCF有好几道类似的题目,可以把它当做一个模板使用。#include <iostream>#include <map>using namespace std;int main(){ int n,v; cin>>n; map<int,int> m;...原创 2020-04-21 23:05:05 · 105 阅读 · 0 评论 -
CCF 20150302 数字排序(map按值Value排序)
思路:用map统计每一个数的个数,将map存入vector<pair<int,int> >中,对vector进行排序,自定义cmp函数。这是一个模板,map按值Value排序。原创 2020-04-21 19:40:15 · 164 阅读 · 0 评论 -
CCF 20150301 图像旋转
简单,通过观察发现最后一列变到第一行,但是顺序没变,很容易代码实现。#include<iostream>using namespace std;int main(){ int n,m; cin>>n>>m; int a[n][m]; for(int i = 0; i < n; i++){ fo...原创 2020-04-21 17:56:41 · 131 阅读 · 0 评论 -
CCF 20151201 数位之和
简单代码如下:#include<iostream>using namespace std;int main(){ int n,ans = 0; cin>>n; while(n){ ans += n %10; n /= 10; } cout<<ans<<endl;...原创 2020-04-21 17:03:36 · 128 阅读 · 0 评论 -
CCF 20150902 日期计算
思路:先将每个月的天数存储在数组中(默认按不是闰年存储),判断是闰年时,days[1]++。之后while判断d大于0时就减去days[i]。最后回溯一下未减去days[i]之前的d就是该月的天数,i+1就是月数。代码如下:#include<iostream>using namespace std;int days[12] = {31,28,31,30,31,30,31...原创 2020-04-21 14:00:21 · 111 阅读 · 0 评论 -
CCF 20150901 数列分段
题目简单,直接上代码代码如下:#include<iostream>using namespace std;const int N = 1000;int a[N] = {0};int main(){ int n; cin>>n; for(int i = 0; i < n; i++){ cin>>...原创 2020-04-21 13:04:11 · 93 阅读 · 0 评论 -
CCF 20160902火车购票
思路:用数组a[20]记录每一排剩余的座位数。每次分配单独处理,a[i]>=val&&i!=20时说明够相邻分配,开始分配;i==20时说明每一排都不够分配,这样按不相邻分配。#include<iostream>using namespace std;int main(){ int n; cin>>n; int ...转载 2020-04-20 21:52:33 · 100 阅读 · 0 评论 -
CCF 20160901 最大波动
题目较简单。大体思路是把代码存在数组中,然后相邻的两个数相减,取绝对值,标记其最大值即可。代码实现#include<iostream>#include<algorithm>using namespace std;const int N = 1000;int data[N] = {0};int main(){ int n; cin&g...原创 2020-04-20 17:32:42 · 104 阅读 · 0 评论 -
CCF 20161204 压缩编码
文章目录CCF 20161204 压缩编码试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例说明问题分析代码实现参考文档CCF 20161204 压缩编码试题编号201612-4试题名称压缩编码时间限制3.0s内存限制256.0MB问题描述给定一段文字,已知单词a1, a2, …, an出现的频率分别t1, t2, …, tn。可以...原创 2020-04-19 00:09:14 · 109 阅读 · 0 评论 -
CCF 20170302 学生排队
#include<iostream>#include<vector>#include<algorithm>using namespace std;const int N = 1000;vector<int> v(N);int main(){ int n, m; cin>>n>>m;...原创 2020-04-12 23:36:00 · 105 阅读 · 0 评论 -
CCF 20170301 分蛋糕
思路:数据分组问题,满足每组数据之和大于等于k,最后一组数据除外。#include<iostream>using namespace std;int main(){ int n,k; cin>>n>>k; int ans = 0,val,sub = 0; for(int i = 0; i < n; i...原创 2020-04-12 23:40:00 · 110 阅读 · 0 评论 -
CCF 201709-2 公共钥匙盒
试题编号:201709-2试题名称:公共钥匙盒时间限制:1.0s内存限制:256.0MB问题描述: 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没...原创 2020-02-26 16:48:00 · 188 阅读 · 5 评论 -
CCF 20171202 游戏
思路:用队列实现,模拟出局过程。代码实现:#include<iostream>#include<queue>using namespace std;queue<int> q;int main(){ int n,k; cin>>n>>k; for(int i = 1; i <= ...原创 2020-04-12 11:16:00 · 140 阅读 · 0 评论 -
CCF 20171201 最小差值
先对数据进行排序,然后求相邻数据差值的最小值代码实现:#include<iostream>#include<algorithm>using namespace std;const int N = 1000;int a[N];int main(){ int n; cin>>n; for(int i = 0;...原创 2020-04-12 10:20:00 · 84 阅读 · 0 评论 -
CCF 20180302 小球的碰撞
思路:暴力模拟。以时间轴为第一层for循环,判断每一个时刻之后是否发生碰撞1.是否与边界碰撞;2.是否有两个小球碰撞。direct数组记录每个小球前进的方向,如果碰撞变方向改变,direct[i] *= (-1)。算法复杂度O(n3)。代码实现:#include <iostream>using namespace std;/** 201803-2 碰撞的小球 ...原创 2020-04-12 00:13:00 · 220 阅读 · 0 评论 -
CCF 20180902 买菜(求区间重叠长度模板)
思路:本题可简化成已知区间,求区间的重叠长度。已知两个区间[a,b],[c,d],x = min(b,d);y = max(a,c)。if(y-x>0)有重叠区间,区间长度为y-x;else 无重叠区间。类比的可以求矩阵的重叠面积。原创 2020-04-11 17:09:00 · 302 阅读 · 0 评论 -
CCF 20181202 小明放学
思路:输入的数据记录的是小明出发时红绿灯的状态,首先需要把这个状态转化成当小明到达每一个路口时的状态,这样后续问题就会转化成小明上学问题。首先用next数组表示红绿灯状态转化,next[1]=3,表示红灯转绿灯。#include<iostream>using namespace std;//1红2黄3绿//1->3->2->1int nex...原创 2020-04-10 21:50:00 · 115 阅读 · 0 评论 -
CCF 20190302 二十四点(表达式求值问题)
思路:表达式求值问题。遇到数字,加入数字栈中;遇到+,将加数加入到栈中;遇到-,将减数的相反数加入栈中;遇到x,让栈顶的数字出栈,与乘数相乘,将结果加入栈中;遇到/,让栈顶的数字出栈,与除数相除,将结果加入栈中;最后将栈中所有元素相加即可。注意:输入的表达式存储在string中,故要的到数字应用str[i]-'0'。代码实现:#include<iostream>#...原创 2020-04-10 11:45:00 · 248 阅读 · 0 评论 -
CCF 20190301 小中大
本题思路较简单,或许有时候拿不了满分,需要注意以下几点:如果中位数是小数,需要四舍五入保留一位小数。此时,最好用c语言的printf("%.11f",mid)格式化输出较为简单,C++格式化输出不是很方便。申请大数组时,应注意在函数为申请,不要在函数内申请,以防栈溢出。在函数外申请,占用的是堆空间,堆空间较大,而栈空间较小,申请大数组,易发生栈溢出。代码实现:#inclu...原创 2020-04-10 12:13:00 · 212 阅读 · 0 评论 -
CCF 20190902 小明种苹果续
思路:每一行数据单独处理,没必要将所有数据都存储起来。用flag数组统计每棵树是否有落果。判断落果方法,先将果数初始化为sum,根据输入的数x判断应该进行的操作,如果x小于等于0,进行疏果,sum-=x;如果x大于0,说明进行的重新统计了果数,比较其与sum的大小判断是否有落果,最后统计落果树的数目。判断落果有几组时,由于树是一个园,故下标应用取余的方法进行头尾循环,e.g.:(i—1...原创 2020-04-07 14:10:00 · 192 阅读 · 0 评论 -
CCF 20190901 小明种苹果
思路:将初始的树上苹果数和疏过操作过程分别存在两个数组中。分别对两个数组操作,求出每棵树上的疏果数和疏果后的苹果总数。扫描每棵树上的疏果数的数组,标记出最多的疏果的树。代码实现:#include<iostream>using namespace std;const int N = 1000;const int M = 1000;int a[N] = {0}...原创 2020-04-07 13:08:00 · 154 阅读 · 0 评论 -
CCF 20191202 回收站选址
思路:将垃圾坐标存储在一个map中,即map的键是垃圾点的坐标;map的值设为1,便于后面的评分统计。这样可以快速的判断该垃圾点的上下左右是否有垃圾和该点是否有垃圾,即是否合适做回收站。在适合做回收站的情况下判断在其左上角、右上角、左下角、右下角位置的垃圾数目给予该收回站评分。最后统计每个评分回收站的个数即可。#include<iostream>#include<...原创 2020-04-07 00:25:00 · 148 阅读 · 0 评论 -
CCF 20191201 报数
思路:for循环j计总共报出的数,i计算从开始报数,数的变化情况,由于跳过的数,不在j的计算范围之内,i != j.i % 7 == 0跳过报数i含有7,将i转成字符串,后用find('7') != -1 跳过报数#include<iostream>#include<sstream>#include<string>using n...原创 2020-04-05 23:40:00 · 159 阅读 · 0 评论