蓝桥杯
如题
Yuhan の Blog
这个作者很懒,什么都没留下…
展开
-
蓝桥杯 第十一届软件类第二次校内模拟赛——C/C++程序设计
第一题思路:简单排列组合问题;答案7!2!\frac{7!}{2!}2!7!第二题思路:dfs搜一下就行了代码:#include<bits/stdc++.h>#define crr(x) cerr << "#x:" << ' ' << x << '\n';using namespace std;int ...原创 2020-04-16 20:34:30 · 1101 阅读 · 0 评论 -
蓝桥杯 PREV-28 地宫取宝(dp)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T120思路:1.记dp[i][j][a][b]dp[i][j][a][b]dp[i][j][a][b]为走到坐标为(i,j)(i,j)(i,j)位置后,手上有aaa件物品且所有物品中最大值为bbb的方案数;2.假设我们现在从(a,b)(a,b)(a,b)走到(x,y)(x,y)(x,y)(这两个...原创 2020-03-31 13:21:23 · 183 阅读 · 0 评论 -
蓝桥杯 PREV-43 拉马车(stl的使用)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T447思路:1.我们可以发现出牌者的牌是遵循队列规则、而桌上的牌是遵循栈规则的;2.用map容器维护一下桌上是否有某张牌,剩下的模拟即可;代码:#include<bits/stdc++.h>using namespace std;queue<char> qu...原创 2020-03-28 21:08:00 · 189 阅读 · 0 评论 -
蓝桥杯 第十一届软件类校内模拟赛——C/C++程序设计
第一题思路:这题是求约数个数,数据不大可以暴力,复杂度O(n)O(n)O(n);但求约数有O(n)O(\sqrt{n})O(n)的算法,见如下代码:代码:#include<bits/stdc++.h>using namespace std;int divisor(int n) { int rs = 0; for(int i = 1; i * i <= ...原创 2020-03-21 18:50:07 · 1818 阅读 · 3 评论 -
蓝桥杯 PREV-19 九宫重排(bfs)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T42思路:既然是求最少次数,那就用bfs搜索;每次寻找下一种可能的状态,用map容器记录即可;代码:#pragma GCC optimize(2)#include<bits/stdc++.h>using namespace std;bool tag[10][10];...原创 2020-03-20 17:20:16 · 208 阅读 · 0 评论 -
蓝桥杯 PREV-17 约数倍数选卡片(对抗搜索)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T40思路:1.这是博弈问题的一般方法,用dfs进行对抗搜索,遍历所有可能,双方在每一步都选取最优步骤;2.单纯dfs会超时,我们知道约大的数,它的约数+倍数个数就相对可能越少,因此我们优先遍历大数即可;代码:#include<bits/stdc++.h>using name...原创 2020-03-16 15:44:09 · 146 阅读 · 0 评论 -
蓝桥杯 PREV-14 高僧斗法(Nim游戏)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T37思路:1.假设从111开始给这nnn个小和尚从左往右编号,那么编号为1,2,3,...,n1,2,3,...,n1,2,3,...,n;2.我们按照一奇一偶的方式给他们组队,结果为(1,2),(3,4),...,(n−1,n)(1,2),(3,4),...,(n-1,n)(1,2),(3,4...原创 2020-03-10 18:26:51 · 163 阅读 · 0 评论 -
蓝桥杯 PREV-13 网络寻路(dfs)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T36思路:每一个点都可以作为起点,用dfs遍历路径条数;代码:#include<bits/stdc++.h>using namespace std;int n, m, s;long long ans;vector<int> G[10005];bool v...原创 2020-03-09 14:12:11 · 149 阅读 · 0 评论 -
蓝桥杯 BEGIN-4 Fibonacci数列
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T4思路:接近蓝桥杯比赛了…最近有一些同学过来问我为什么java代码提交蓝桥的OJ报运行错误,而且都是拿这题来问的…所以写这篇就是想提醒一下初次使用OJ的java选手吧(虽然我是用C++的QAQ)1.在提交代码时不能加入package语句;2.类名的定义必须是public class Main...原创 2020-03-02 14:53:41 · 194 阅读 · 0 评论 -
蓝桥杯 PREV-25 城市建设(最小生成树)
题目链接:PREV-25 城市建设思路:1.先考虑没有码头的情况,使用kruskal算得最小生成树,但是需要检查一下所有点之间是否连通;2.而后考虑建码头的情况,所谓建码头的城市均可以互相连通,我们可以设立一个虚点,城市到虚点的边权即是建造码头的费用,再使用kruskal算法算得最小生成树的最小权值;3.我们取两种情况的最小值(注意第一种情况要保证连通);4.在写最小生成树的时候...原创 2020-02-29 17:32:17 · 216 阅读 · 0 评论 -
蓝桥杯 PREV-42 九宫幻方(dfs)
题目链接:PREV-42 九宫幻方思路:直接dfs搜索所有可能,记录能形成幻方的矩阵即可;代码:#include<bits/stdc++.h>using namespace std;int cnt, vst[10];vector<vector<int> > mat(3, vector<int>(3)), ans(3, ve...原创 2020-02-29 16:02:22 · 161 阅读 · 0 评论 -
蓝桥杯 PREV-35 正则问题
题目链接:PREV-35 正则问题思路:题目不解释一下压根不知道x () |这些符号是做什么的…简单解释:x就是代表一个字符,题目要求最长字符数;()就是起到计算中的优先级作用;|代表或,既然取最长我们就需要找到或运算左右最长的字符;举例:1.xxx|xx就是3;2.(xxx)xx是5;3.(xxx|x)xx也是5;知道意思之后使用递归即可求得最长字符串;代码:...原创 2020-02-28 20:01:40 · 152 阅读 · 0 评论 -
蓝桥杯 PREV-50 对局匹配(贪心)
题目链接:PREV-50 对局匹配思路:1.我们将分数模kkk相同的放在一组,我们知道只有同一组的人才有可能相互匹配到;2.我们遍历每一组,按公差为kkk的分数顺序将该分数的人数组成一个序列,例如所有分数为[2,2,4,5,3,4,5,1,8][2,2,4,5,3,4,5,1,8][2,2,4,5,3,4,5,1,8],kkk为222,则模kkk为000的一组分数为[2,2,4,4,...原创 2020-02-27 15:42:16 · 233 阅读 · 0 评论 -
蓝桥杯 PREV-44 青蛙跳杯子(bfs)
题目链接:PREV-44 青蛙跳杯子思路:我们采用搜索的方式,寻找每一种情况的所有下一种可能情况,并用map标记已经遍历过的情况;像此种类似寻求最短路的搜索用bfs更加高效;代码:#include<bits/stdc++.h>using namespace std;map<string, int> vst;string s, t;queue&...原创 2020-02-27 13:34:58 · 153 阅读 · 0 评论 -
蓝桥杯 PREV-39 日期问题
题目链接:PREV-39 日期问题思路:1.将题目所给的三种格式都尝试一下;2.注意排序输出;3.算闰年遵守“四年一闰,百年不闰,四百再闰”的规则(闰年2月29天,平年2月28天);4.注意计算得出的重复日期要删去;代码:#include<bits/stdc++.h>using namespace std;struct date { int y, m...原创 2020-02-26 16:54:50 · 176 阅读 · 0 评论 -
蓝桥杯 PREV-37 分巧克力(二分)
题目链接:PREV-37 分巧克力思路:1.我们知道高为hhh,宽为www的矩形最多能分出[hd]+[wd][\frac{h}{d}]+[\frac{w}{d}][dh]+[dw]个d∗dd*dd∗d的正方形(其中[ ]为向下取整函数);2.然后二分答案,依次判断是否可行即可;代码:#include<bits/stdc++.h>using namespace...原创 2020-02-25 15:58:53 · 182 阅读 · 0 评论 -
蓝桥杯 PREV-31 小朋友排队(树状数组)
题目链接:PREV-31 小朋友排队思路:分析题意不难理解出某个人的移动次数为(排在他前面比他高的人数+排在他后面比他矮的人数);使用树状数组可以高效地计算得到上面两项数据(使用时注意将每个人的身高加1,因为有0身高的存在);每个人的不高兴程度就是ai(ai+1)2\frac{a_i(a_i+1)}{2}2ai(ai+1),其中aia_iai代表此人的移动次数;代码:...原创 2020-02-25 15:36:32 · 190 阅读 · 0 评论 -
蓝桥杯 PREV-32 分糖果(模拟)
题目链接:PREV-32 分糖果思路:按题意模拟即可代码:#include<bits/stdc++.h>using namespace std;int n, a[105], ans, b[105];inline void run() { for(int i = 0; i < n; i++) { a[i] >>= 1; b[(i +...原创 2020-02-24 14:09:25 · 141 阅读 · 0 评论 -
蓝桥杯 PREV-33 兰顿蚂蚁
题目链接:PREV-33 兰顿蚂蚁思路:按照题意模拟即可代码:#include<bits/stdc++.h>using namespace std;bool a[105][105];int m, n, x, y, s, k;int mx[4] = {-1, 0, 1, 0}, my[4] = {0, 1, 0, -1};inline void move(...原创 2020-02-24 13:19:24 · 124 阅读 · 0 评论 -
蓝桥杯 PREV-3 带分数(dfs)
题目链接:PREV-3 带分数思路:根据题意我们需要找到满足(n−x)=z/y(n - x) = z / y(n−x)=z/y的(x,y,z)(x, y, z)(x,y,z)三元组解的个数,且x,y,zx,y,zx,y,z中所有数字不相同且刚好是111到999的一个排列;1.我们需要知道xxx的位数不能超过nnn(一个数xxx的位数可以用lg(x)+1lg(x)+1lg(x)+1计...原创 2020-02-03 14:52:59 · 209 阅读 · 0 评论 -
蓝桥杯 PREV-26 最大子阵(二维最大子序列和)
题目链接:PREV-26 最大子阵思路:首先我们需要学会一维最大子序列和(这里就不多赘述啦)此题我们枚举这个子矩阵的上底和下底即原矩阵的两列,对于原矩阵的每一列我们都用前缀和数组记录下来;假设现在枚举第r和第rr列,我们设立数组v(下标从1到m),v[i]的值即为原矩阵a[r][i] + a[r + 1][i] + ... + a[rr][i],此时我们只需求一维数组v的最大子序列...原创 2020-02-23 16:13:53 · 215 阅读 · 0 评论 -
蓝桥杯 PREV-27 蚂蚁感冒
题目链接:PREV-27 蚂蚁感冒思路:仔细思考可知我们可以完全忽略碰面掉头这个条件;那么我们只需要统计初始感冒蚂蚁往哪个方向、初始感冒蚂蚁左侧蚂蚁往左往右方向蚂蚁数量、初始感冒蚂蚁右侧往左往右蚂蚁数量即可;代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest fr...原创 2020-02-23 15:01:16 · 172 阅读 · 0 评论 -
蓝桥杯 PREV-41 Excel地址
题目链接:PREV-41 Excel地址思路:当成进制来理解即可;代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin); #endif int n; cin >> n; strin...原创 2020-02-22 20:40:33 · 172 阅读 · 0 评论 -
蓝桥杯 PREV-23 数字游戏(等差数列)
题目链接:PREV-23 数字游戏思路:根据题意我们易计算出第i(0≤i<T)i(0\leq i<T)i(0≤i<T)次说出的数字为[1+in(in+1)2]%k[1+\frac{in(in+1)}{2}]\%k[1+2in(in+1)]%k,我们的目标即让iii逐个遍历,然后求和即可;但是略微分析可知,这个数字在计算的过程中达到102410^{24}1024数量...原创 2020-02-22 19:32:01 · 553 阅读 · 0 评论 -
蓝桥杯 PREV-34 矩阵翻硬币(大数)
题目链接:PREV-34 矩阵翻硬币思路:1.由题意可知,将所有硬币都进行一次Q操作后,被翻转奇数次的硬币是反面朝上的;2.定义f(x)f(x)f(x)为正整数xxx的约数个数,那么坐标为(a,b)(a,b)(a,b)的硬币会被翻转f(a)∗f(b)f(a)*f(b)f(a)∗f(b)次,我们知道只有奇数乘以奇数结果才会是奇数,因此当且仅当f(a)f(a)f(a)与f(b)f(b)f...原创 2020-02-22 14:11:28 · 206 阅读 · 0 评论 -
蓝桥杯 PREV-49 发现环(链表)
题目链接:PREV-49 发现环思路:1.我们可以采用依次去掉度数为1的点的方法来寻找图中的环;2.遍历的过程中可以采用链表方式,以减少时间开销;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6 + 5;int n, nex[maxn], deg[maxn];vector...原创 2020-02-20 15:27:36 · 153 阅读 · 0 评论 -
蓝桥杯 PREV-21 回文数字
题目链接:PREV-21 回文数字思路:dfs出所有情况即可代码:#include<bits/stdc++.h>using namespace std;int n;int a[3], b[3], s;vector<int> v;inline void dfsa(int p) { if(p == 3) { if(s == n) v.pu...原创 2020-02-20 14:41:31 · 130 阅读 · 0 评论 -
蓝桥杯 PREV-46 填字母游戏(博弈)
题目链接:PREV-46 填字母游戏思路:此题博弈的思想就是每个人寻找自己每一步的最优解,我们用dfs模拟博弈过程;int dfs()返回某方此步骤的最优解,遍历所有空格,模拟所有可能然后取里面最优的一个作为函数返回值;在游戏结束之前每个人每个步骤填一个空格然后递归地将剩下的局面交给对方;为了减少复杂度我们采用map容器进行记忆化搜索,保存该局面的最优结果;代码:#inclu...原创 2020-02-19 17:21:59 · 293 阅读 · 0 评论 -
蓝桥杯 PREV-30 波动数列(0/1背包)
题目链接:PREV-30 波动数列思路:设这个数列首项为AAA,由题意可知总和一定可以表示成nA+xa−yb(x+y=n(n−1)2)nA+xa-yb(x+y=\frac{n(n-1)}{2})nA+xa−yb(x+y=2n(n−1))的形式,其中xxx为+a+a+a操作的次数和,yyy为−b-b−b操作的次数和;那么我们有nA=s−xa+yb(x+y=n(n−1)2&0≤...原创 2020-02-19 15:05:20 · 219 阅读 · 0 评论 -
蓝桥杯 PREV-47 区间移位(二分+贪心)
题目链接:PREV-47 区间移位思路:1.既然是寻得长度的最优解,那我们二分答案便可;2.对于checkcheckcheck函数,我们自然需要检查当前的二分值是否合乎要求,即在lenlenlen长度内能否将这些线段拼凑好;3.博主首先采用左端点越小优先级越高的贪心方法,只有80分,该思路的问题就是过于想当然,如果是求线段移动总长度之和最小,我们可以采用这种方式;4.我们从左往右...原创 2020-02-18 22:37:27 · 352 阅读 · 0 评论 -
蓝桥杯 PREV-15 格子刷油漆(dp)
题目链接:PREV-15 格子刷油漆思路:这个2∗n2*n2∗n的城墙,我们将四个端点和非端点分开考虑;|------------------------------------------------------------------------------------|我们设dp[n]dp[n]dp[n]为:有nnn列时,从某一端点为起点,一共多少种刷漆方法;从端点开始我们...原创 2020-02-17 16:59:18 · 279 阅读 · 0 评论 -
蓝桥杯 PREV-12 危险系数
题目链接:PREV-12 危险系数思路:找到两点间的所有路径,结点出现次数和路径条数相等的(即每一条路径都出现的结点)即为关键点;统计这样的结点个数即可;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1005;int n, m, s, t, cnt, par[maxn], num...原创 2020-02-17 14:13:16 · 134 阅读 · 0 评论 -
蓝桥杯 PREV-11 横向打印二叉树
题目链接:PREV-11 横向打印二叉树思路:首先递归建立二叉搜索树;用字符串数组保存横向打印的二叉树,然后按层递归打印,注意打印的细节即可;代码:#include<bits/stdc++.h>using namespace std;string s[205];const int maxn = 1e4 + 5;int lf[maxn], rt[maxn]...原创 2020-02-16 15:37:05 · 230 阅读 · 0 评论 -
蓝桥杯 PREV-10 幸运数
题目链接:PREV-10 幸运数思路:用单链表模拟即可代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6;int nex[maxn];int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin);#endif...原创 2020-02-16 14:32:14 · 158 阅读 · 0 评论 -
蓝桥杯 PREV-9 大臣的旅费(求树直径)
题目链接:PREV-9 大臣的旅费思路:根据题意,该国路线图是一颗树,则题意是求此树的直径;用两次dfs/bfs即可求得一棵树的直径;代码:#include<bits/stdc++.h>using namespace std;struct edge { int to, cost; };vector<vector<edge> > G;...原创 2020-02-15 16:43:26 · 230 阅读 · 0 评论 -
蓝桥杯 PREV-8 买不到的数目
题目链接:PREV-8 买不到的数目思路:结论:a,b为质数,x,y为非负整数,则ax+by最大不能表示的数为ab-a-b,因此ab-a-b即为答案;但是题目似乎并没有说a,b为质数?所以严谨一点还是用动态规划吧;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e7 + 99;...原创 2020-02-15 16:09:21 · 161 阅读 · 0 评论 -
蓝桥杯 PREV-6 翻硬币
题目链接:PREV-6 翻硬币思路:题目似乎并没有提到第一种状态不能转化到第二种状态的情况啊…实际上两种状态不相同的位置总数如果是奇数的话就没办法相互转化…题目也没说给定的两种状态一定可以相互转化,那我们就默认可以好了…我们记录所有正反不相同的硬币在字符串中出现的位置,然后贪心地去计数即可;代码:#include<bits/stdc++.h>using name...原创 2020-02-14 18:20:51 · 250 阅读 · 0 评论 -
蓝桥杯 PREV-4 剪格子
题目链接:PREV-4 剪格子思路:我们从左上角的格子开始dfs,途中记录sum和遍历的格子数,稍微剪枝即可;代码:#include<bits/stdc++.h>using namespace std;const int inf = 1 << 30;int m, n, a[15][15], sum, ans;bool vst[15][15];...原创 2020-02-14 14:23:59 · 152 阅读 · 0 评论 -
蓝桥杯 PREV-53 分考场(DFS)
题目链接:PREV-53 分考场思路:假设我们目前有ans个考场,我们dfs一下,检查这么多考场够不够用;ans个考场,分为已经有人在的考场和没人在的考场,对于每一个人,可以分配到有人的和没有人的,只不过有人的考场需要逐个检查是不是朋友;最后我们让ans从1开始逐个递增,寻找到最少考场数即可;//刚开始博主用的二分ans,不知为何只有60…递增就是满分代码:#include...原创 2020-02-10 15:38:10 · 168 阅读 · 0 评论 -
蓝桥杯 PREV-54 合根植物(并查集)
题目链接:PREV-54 合根植物思路:并查集裸题代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1000 * 1000;int par[maxn], rk[maxn], tot;void init_set(int n) { tot = n; for(int i = 1; i &...原创 2020-02-09 15:05:14 · 139 阅读 · 0 评论