随笔分类 - 之前的比赛题目
摘要:2020年第十一届蓝桥杯C/C++ B组省赛题解 试题A:门牌制作 【问题描述】 小蓝要为一条街的住户制作门牌号。 这条街一共有 \(2020\) 位住户,门牌号从 \(1\) 到 \(2020\) 编号。 小蓝制作门牌的方法是先制作 \(0\) 到 \(9\) 这几个数字字符,最后根据需要将字 符
阅读全文
摘要:试除法判断质数 最常用的方法就是用试除法,复杂度$O(sqrt(N))$ 首先有下列几种写法: 一、最暴力的写法,比较慢 bool is_prime(int n) { if(n < 2) return false; for(int i = 2; i < n; i++) if(n % i == 0)
阅读全文
摘要:快速幂的作用: 就是为了快速的算出$ak(mod)p$,先看朴素算法,如果算ak那么得用一个for循环,效率为$O(n)$,但是如果使用快速幂那么效率就成变成了$O(logn)$,所以说效率还是很高的。 原理: 因为k有$[log_2k] + 1$个二进制位,所以我们需要预处理出$a^{20}(mo
阅读全文
摘要:题目大意 矩阵中各个方格都有颜色,判断是否有相同颜色的方块可以组成环。(原题链接:CF510B Fox And Two Dots) 输入: 第一行:\(n\), \(m\),表示矩阵的行和列 接下来$n$行: 输入矩阵 输出: 如果有环则输出:\(Yes\), 否则输出:\(No\); 样例: 输入
阅读全文
摘要:题目大意: 一个$n$行,$m$列的迷宫,$'.'$表示空地, $'*'$表示障碍,可以向上下左右移动,但是左右移动时会有步数限制,求所能到达的格子数。(原题链接:Labyrinth) 输入格式: 第一行:\(n\), \(m\),表示迷宫行数和列数 第二行:\(r\), \(c\), 表示起点 第
阅读全文
摘要:题目大意 背景是逃离$3D$地下监狱,也就是三维样例,你可以前往所在小格的前方,后方,左方,右方,上层,下层的小格,'.'表示可走,'x'表示墙壁,'S'表示起点,'E'表示终点。每走一小格花费一分钟时间,求逃离地下监狱需要的最少时间。(原题链接:P2360 地下城主) 输入格式: 第一行:$l$表
阅读全文
摘要:#题目大意: 一个网格,机器人只能走格点,不能走框内,而障碍物是在框内的,机器人有五个指令:向前走一步、向前走两步、向前走三步、向左转、向右转,每个指令都需要花费1秒中的时间,计算机器人从起点到终点花费的最少时间(原题链接:P1126 机器人搬重物) 如图(图片来自洛谷): ##输入格式: 第一行:
阅读全文
摘要:#题目大意 $n$行$m$列矩阵中, 有$a$个已经被感染的人, 有$b$个未感染的人, 求未感染的人被感染的时间, 如果一个人在感染源上, 则感染时间为0。 ##输入格式 第一行输入:\(n\) \(m\) \(a\) \(b\) 接下来$a$行:每行输入已被感染的人的位置 $x$行$y$列 接下
阅读全文
摘要:#题目大意: 给定一棵二叉树的中序和后序遍历,求先序遍历。 例如中序遍历$ACGDBHZKX$,后序遍历为$CDGAHXKZB$,那么先序遍历就是$BAGCDZHKX$ ##思路: 首先我们知道二叉树的先序遍历是先访问根再访问子树,那么对于这道题来说要求先序遍历结果,我们就每次执行函数输出当前子树它
阅读全文
摘要:#二分图 设$G=(V,E)$是一个无向图,如果顶点$V$可分割为两个互不相交的子集$(A,B)\(,并且图中的每条边\)(i,j)$所关联的两个顶点$i$和$j$分别属于这两个不同的顶点集$(A, B)$,则称图$G$为一个二分图。 因此如果一个图是二分图,它一定不含有奇数环。 图来自百度百科 #
阅读全文
摘要:#最小生成树 ##(克鲁斯卡尔算法) Kruskal 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图 \(G=(V, E)\),其中$V$表示图中点的集合,$E$表示图中边的
阅读全文
摘要:题目大意: 给出N个点,M条边的有向图,对于每个点v,求A(v)表示从点v出发,能到达的编号最大的点。 输入: 第一行: 第1 行,2 个整数N,M。 接下来M行,每行2个整数$U_i$,\(V_i\),表示(\(U_i\),\(V_i\))。点用1,2,……,N编号。 输出: N 个整数A(1),
阅读全文
摘要:题意大概意思就是分别用dfs与bfs遍历一个图,特殊要求是从编号小的点开始遍历。 用邻接表存图,至今我也没想明白怎么才可以从编号小的点开始遍历,明白是排序,但是不知道如何排序,题解中的排序方法是:按照终点从大到小排序,终点相同则按照起点从小到大排序,就记住吧。 #include <iostream>
阅读全文
摘要:上边n表示节点个数,m表示边,其中稠密图用邻接矩阵存,稀疏图用邻接表来存。 稀疏图与稠密图定义:数据结构中对于稀疏图的定义为:有很少条边或弧(边的条数|E|远小于|V|²)的图称为稀疏图(sparse graph),反之边的条数|E|接近|V|²,称为稠密图(dense graph)。(来自百度百科
阅读全文
摘要:####题目大意: 第一行输入N,C 第二行输入n个数字 输出,求A - B = C的数对个数 ####样例 4 1 1 1 2 3 ####输出 3 思路:用STL容器map,map<num, times>,建立一个数字出现的次数的映射,题目要求是A - B = C,我们将其转换成A - C =
阅读全文
摘要:####首先明白什么是拓扑序列? 只有有向图才会有拓扑序列,每一条边的起点都在终点之前 例如: 但如果是这样子的 有向图中存在一个环 则它就不存在拓扑序列。 ####拓扑图:有向无环图一定存在拓扑序列,因此有向无环图也叫做拓扑图,所有入度为0的节点都可以作为起点,因此拓扑序列并不唯一。** 有向无环
阅读全文
摘要:###例题 给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数n,表示树的结
阅读全文
摘要:###例题:图中点的层次 给定一个n个点m条边的有向图,图中可能存在重边和自环。 所有边的长度都是1,点的编号为1~n。 请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。 输入格式 第一行包含两个整数n和m。 接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为
阅读全文
摘要:DFS与栈密切相关,则BFS与队列密切相关 BFS常用于求最短路,最小步数,最小距离等问题 个人理解:BFS常用来搜最短路,它是一层一层的搜索,因此它搜的距离一定是最短距离,需要用队列保存每一层的状态,从根节点开始,根节点入队,然后队列不空,进入循环,取出队列头,开始扩展它下一层的点,如果这些点都符
阅读全文
摘要:###全排列问题 给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数n。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据范围 1≤n≤7 输入样例: 3 输出样例: 1 2 3 1 3 2 2 1 3
阅读全文

浙公网安备 33010602011771号