ccf
ccf-csp考试练习,发出来的都是100分的代码
smiling~
努力会被看得到的
展开
-
ccf 2014-03-4 无线网络(spfa)
题外:现在真就只能做做模拟了,菜啊。参考博客:1 2ps: ccf官网这个题的数据确实水了。思路:在普通spfa的dis和vis数组上增加一维。dis[i][j]表示源点到i,经过了j个新增中转路由器的距离。(这个距离即一共经过了多少路由器),vis数组含义差不多,只不过是用来标记的。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#incl原创 2021-04-04 01:30:54 · 202 阅读 · 0 评论 -
ccf 2014-09-4 最优配餐(bfs)
思路:将每个店加入队列,bfs依次开始搜索,搜索到所有顾客所在地都被访问过为止,由于队列的性质,每个顾客被访问时,都是被离自己最近的店所访问,所以最多搜全图一次。注意答案可能会超int,要使用long long保存。代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>#原创 2021-04-02 23:47:05 · 241 阅读 · 0 评论 -
ccf 2020-06-2 稀疏向量(模拟)
思路:正常离散存储,把下标相同的对应位置乘起来相加。注意数据范围,需要使用long long(是我的错觉吗,怎么感觉比第一个题简单)代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>#include<cmath>#include<sstream&原创 2021-04-02 22:38:12 · 104 阅读 · 0 评论 -
ccf 2020-06-1 线性分类器
思路:不同类别两点分别代入直线的值,如果同号,在同一边,异号的话在两边。注意数据范围,使用long long。代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>#include<cmath>#include<sstream>using na原创 2021-04-02 22:23:48 · 98 阅读 · 0 评论 -
ccf 2015-09-3 模板生成系统(string部分函数使用)
思路:string类真是个好东西啊,可惜以前学的都忘了,以前也没整理博客。。所以就只能用一点最常用的了。就是正常按行读入,按题意模拟。我写的有点复杂了其实,网上应该有更简单的,没办法,那些函数都忘了,就只能嗯模拟了qaq代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>原创 2021-04-01 22:46:07 · 108 阅读 · 0 评论 -
ccf 2015-12-3 画图
思路:注意下标转换,头都转晕了。。代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>using namespace std;const int N = 105;typedef long long ll;int book1[N][N],vis[N][N],book原创 2021-03-31 23:04:45 · 143 阅读 · 2 评论 -
ccf 2015-03-3 节日(模拟)
思路:直接初始化,把1850-2050每一天是星期几算出来,输入后按题意判断就行了。代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>using namespace std;const int N = 6005;typedef long long ll;int原创 2021-03-31 21:42:08 · 69 阅读 · 0 评论 -
ccf 2014-12-3 集合竞价(思维+模拟)
思路:不知道有没有把这个题做复杂,,就是直接按序号读入,读入完毕后,将有效的(没有被撤销的)记录分别插入买和卖的容器,按价格进行排序。然后暴力枚举答案的价格,找出最大的。代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<map>#include<vector>using namespace std;con原创 2021-03-31 00:38:39 · 213 阅读 · 0 评论 -
ccf 字符串匹配 2014-09-3(字符串模拟)
思路:按着题意模拟即可代码:#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<cstring>using namespace std;const int N = 1005;typedef long long ll;int flag,n;string s;bool check(int i,string &ss){原创 2021-03-30 15:24:18 · 83 阅读 · 0 评论 -
ccf 2014-03-3 命令行选项(字符串模拟+map)
思路:沉下心来认真读题就行了,注意边界情况,map<key,value>是根据key值自动从小到大排序的,对于这个题很合适,使用map最后直接遍历就行了。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<cstring>using namespace std;const int N = 1005;string g原创 2021-03-30 12:23:15 · 129 阅读 · 0 评论 -
ccf 2013-12-3最大的矩形
思路:枚举起点和终点可枚举到所有连续子区间,维护区间内的最小高度,然后进行面积计算,找出最大值即可。代码:#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int N = 1005;int h[N];int main(){ int n,ans=0; cin>>n; for原创 2021-03-23 11:34:05 · 79 阅读 · 0 评论 -
ccf 2013-12-2 ISBN号码(字符串模拟)
思路:按题意模拟,涉及到字符与数字的转化。代码:#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;#define fi first#define se secondtypedef long long ll;const int N = 10005;int num[N];void cal(string s){原创 2021-03-23 00:19:07 · 70 阅读 · 0 评论 -
ccf 2014-03-2 窗口
思路:按题意模拟,每次选择的窗口,直接让它的优先级最大就可以了。代码:#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;#define fi first#define se secondtypedef long long ll;const int N = 1005;struct node{ int id原创 2021-03-22 23:58:02 · 74 阅读 · 0 评论 -
ccf 2014-09-2 画图
思路:纯模拟,用格子左下角的坐标为1或0代表该格子上色与否。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define fi first#define se secondtypedef long long ll;const int N = 105;int a[N][N];int main(){ int n,ans=0; ci原创 2021-03-22 22:49:42 · 93 阅读 · 0 评论 -
ccf 2014-12-2 z字形扫描
题外:刚开始没捋清楚给自己绕晕了,,调了挺久的思路:找到下标的规律,一条斜线上的下标变化为**(i, j)-> (i+1, j-1) 或者(i, j) -> (i-1, j+1),在拐点处只对其中一个坐标做加的操作,注意到最拐点的时候要特判**。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define fi first#define原创 2021-03-22 22:36:44 · 72 阅读 · 0 评论 -
ccf 201903-1小中大(水题)
思路: 事实证明,不能因为它是第一题就藐视它,还是得认真读题,要注意小数的情况,第一次眼瞎没看见代码:#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;#define inf 0x3f3f3f3fconst int N = 1e5+10;int a[N];int.原创 2021-01-25 12:51:14 · 109 阅读 · 0 评论 -
ccf 202012-3 带配额的文件系统(大模拟)
题外: 啊这,大半年没来csdn了,都长草了。回来练练机试内容吧,现在敲个模拟题,磕磕绊绊的。。但是这大模拟恶心也是真恶心。。。思路: 开始的时候跑偏了,本来是用的邻接表直接建边,但是问题是不在同一层的文件名可以重复,,有被坑到,那么就不能用全局的map给文件名编号了,得在结构体里面用map编号,这样的话就不用邻接表了,直接记录父节点回跳维护就行了。那么直接放代码吧,为了让自己视角清晰写了挺多注释的。#include <stdio.h>#include<iostream>原创 2021-01-16 22:33:15 · 3870 阅读 · 5 评论 -
ccf 2015-03-2 数字排序(桶排序+sort)
思路:先桶排序,然后再存数对进行排序,用结构体也可以。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define fi first#define se secondtypedef long long ll;typedef pair<int,int> pa;const int N = 1005;int num[N];pa a[N]原创 2021-03-22 21:09:49 · 55 阅读 · 0 评论 -
ccf 2015-09-2 日期计算
思路:按题意判断+模拟。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;int a[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};int main(){ int y,d,mont原创 2021-03-22 20:39:45 · 82 阅读 · 0 评论 -
ccf 2015-12-2 消除类游戏(模拟)
思路:按题意模拟,因为提前消除会对后面的判断有影响,所以多开一个数组用来消除,用原数组作比较。(一开始打算dfs,后面发现没必要)代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N = 35;int a[N][N],b[N][N];int nex[4][2]={{0,1},{0,-1},{原创 2021-03-22 19:53:12 · 73 阅读 · 0 评论 -
ccf 2016-04-2 俄罗斯方块(模拟)
思路:细节还挺多的一个模拟题。从底向上判断有没有能放下这四个块的空位,如果有的话判断它所在的列上面有没有块挡着。代码:#include<iostream>#include<cstring>#include<cstdio>using namespace std;typedef long long ll;int a[20][20],b[5][5],vis[15];bool check(int x,int y){ memset(vis,0,sizeo原创 2021-03-22 19:25:50 · 95 阅读 · 0 评论 -
ccf 2016-09-2 火车购票(模拟)
思路:用二维数组模拟,num数组记录一下一行已放了几个。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N = 1005;int a[25][10],num[N];int main(){ int n; cin>>n;原创 2021-03-21 20:57:20 · 94 阅读 · 0 评论 -
ccf 2016-12-2工资计算
思路:按着题意倒着模拟有点麻烦,整理了一下感觉有点乱,所以就试结果好了,题目说工资是100的整数倍,那么依次往上找比t大的100的倍数,算他们税后的数值,找到与t相同的为止。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N = 1005;double b[N],c[N];int cal(原创 2021-03-21 20:36:45 · 75 阅读 · 0 评论 -
ccf 2017-03-2学生排队(模拟)
思路:按题意模拟就行代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N = 1005;int a[N];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++) a[i原创 2021-03-21 19:41:19 · 94 阅读 · 0 评论 -
ccf 2017-09-2 公共钥匙盒(排序+模拟)
思路:把借和还当成独立事件,按题目所说顺序进行排序,然后按题意进行模拟即可。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<vector>using namespace std;typedef long long ll;typedef pair<int,int> pa;const int N = 2005;struct node{ in原创 2021-03-21 19:19:51 · 145 阅读 · 0 评论 -
ccf 2018 09-02 买菜
题外:最近老卡简单问题,不知道怎么了,这个题卡了一天有一个点过不了,发现数组没开够,mdzz思路:方便简化操作,把他们都放在一维数组里,对于奇数i,a[i]-a[i+1]是它的一个时间段。对目前的a, b的两个子区间,如果两个子区间有重叠,就把重叠部分加进答案中,然后把区间右端点小的区间往后遍历。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;type原创 2021-03-21 18:10:17 · 63 阅读 · 0 评论 -
ccf 2017-12-2 游戏(队列模拟)
思路:约瑟夫问题变形,n很小,直接模拟即可。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#define fi first#define se secondusing namespace std;#define inf 0x3f3f3f3ftypedef long long ll;typedef pair<int,int> pa原创 2021-03-20 23:21:04 · 103 阅读 · 0 评论 -
ccf 2018-03-2碰撞的小球(模拟)
思路:纯模拟,注意判断是否碰撞的时候前后要一次判断,i与i+1碰撞,若遍历至i时检测到碰撞修改了i的位置,遍历至i+1时,便无法检测到碰撞,出错。代码:#include<iostream>#include<cstdio>#include<algorithm>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int,int&原创 2021-03-20 23:19:24 · 67 阅读 · 0 评论 -
ccf 201903-2 二十四点(模拟)
思路: 就硬模拟,其实还是用栈简单一点,当时懒得写栈了,就模拟,结果有一个小地方写错改了好久,西八代码:#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;#define inf 0x3f3f3f3fconst int N = 1e5+10;int a[N];i.原创 2021-02-09 13:57:05 · 88 阅读 · 0 评论 -
ccf 201909-3 字符画(模拟)
题外: 这个题的题意也太搞人心态了,光读题读了半个小时,感觉完全没说清楚,纯靠猜,而且那个前景有什么用最后也不知道,总之感觉难度都在读题上。思路:将读入的字符串处理成十进制的三个颜色,分别存储。按p*q的块处理,得到块的平均颜色(平均时向下取整)。将颜色与上一个块的颜色last作比较(初始为默认值,全为0),若相同,直接输出空格,显示颜色,否则输出改变颜色的转义序列及一个空格并重置last。输出一行后,输出一个换行符并将last设置为默认值。注意:所有的符号需要转换为ASCII码再转换为.原创 2021-01-25 11:22:24 · 185 阅读 · 0 评论 -
ccf 201909-2 小明种苹果(续) (水题)
思路: 整体就是个模拟,注意它的掉落的意思是除疏果以外的操作使苹果掉落,即更新苹果个数时发现与自己统计的个数不一样。代码:#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<map>using namespace std;const i.原创 2021-01-24 11:55:50 · 144 阅读 · 1 评论 -
ccf 201912-3 化学方程式(模拟)
思路: 具体来说没啥坑点,就是嵌套括号的情况需要用一个栈把系数存起来,整体的计算也是用栈把元素分开然后计算,这种题就得把思路捋清楚最好多封装点函数,不然容易乱。对了,必须要吐槽一下,2019年这几个题的样例都是图片没办法复制,这么长的样例我手敲的,吐血!样例我放在代码最后的注释了,需要可以自取~代码:#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>原创 2021-01-21 21:52:30 · 169 阅读 · 0 评论 -
ccf 201912-2 回收站选址(离散化)
思路: 坐标最大到1e9,但是坐标个数很小,离散化以后按题意模拟即可。但在我judge函数里面我判断这个坐标是否存在的时候直接用了if(mp[xx])以及if(!mp[xx]),然后发现迭代器遍历map的循环发生了死循环,这样判断会自动将xx添加进map里面,这个问题以前好像没发现,不知道是什么情况。如果有大佬看见可以帮我解答一下~代码:#include <cstdio>#include<iostream>#include<algorithm>#inclu原创 2021-01-20 16:08:59 · 103 阅读 · 0 评论 -
ccf 202009-3 点亮数字人生(模拟+拓扑判环)
题外: 这个题思路挺好想的,但是我命令序列的数组没开够卡了好久,, 所以这是小于kmax还是小于N呢,,我一直以为是kmax。。好吧我的锅思路: 每个器件直接存在先后关系,比如1的输出是2的输入,那么必须先算1再算2,所以建个图找出拓扑序然后按着拓扑序计算各个值就可以了。整体来说没有什么坑点。代码:#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>原创 2021-01-17 13:22:02 · 294 阅读 · 2 评论