
题解
题解
深夜面包
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[蓝桥杯][2015年第六届真题]移动距离
题目链接:移动距离解题思路:划分几个特殊界限:1、当n、m是k的倍数是值会在行首或行末;2、如果不是k的倍数,那么则分奇偶行。把数给画出来就看出规律了。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long lon原创 2020-10-10 18:05:14 · 179 阅读 · 0 评论 -
[蓝桥杯][2018年第九届真题]全球变暖
题目链接:全球变暖解题思路:当遇到陆地时就宽搜这块陆地,每一块陆地判断周边是否有海,如果有海证明会被淹没,最后判断淹没的数量和这块陆地的大小是否相同,如果相同,那么证明这整块陆地已经被淹没#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) mem原创 2020-10-13 16:42:39 · 342 阅读 · 0 评论 -
[蓝桥杯][2018年第九届真题]小朋友崇拜圈
题目链接:小朋友崇拜圈解题思路:先用拓扑思想,把度为0的点删除,因为环里的点度都是为1的,也把度为0的点相连的点的度-1,如果还是为0则也不是在环里,最后剩下的肯定是环,然后循环找每个环的大小即可#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b)原创 2020-10-13 14:38:24 · 336 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]修改数组
题目链接:修改数组解题思路:用并查集思路,如果一个数的父节点就是当前数的位置,如果标记下一个数值一样的数的位置+1#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std原创 2020-10-15 16:44:52 · 476 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]旋转
题目链接:旋转解题思路:分清楚哪个是内循环,哪个是外循环,那里是起点即可。#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long原创 2020-10-15 19:32:03 · 311 阅读 · 0 评论 -
[蓝桥杯][2013年第四届真题]核桃的数量
题目链接:核桃的数量解题思路:找三个数的最小公倍数即可满足条件#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef unsigned long long ull; typedef pair<int,int>PII;typedef pair<double,double>PDD;namespace IO{原创 2020-10-02 15:11:25 · 203 阅读 · 0 评论 -
[蓝桥杯][2018年第九届真题]乘积最大
题目链接:乘积最大解题思路:1、如果k==n的话,那么全部数字都要选2、如果k%2==0(即k为偶数),那么选出来的一个是非负数3、如果k%2==1(即k为奇数)分两种:(1)如果全部都为负数,那么全部都为负数,把最大最大负数取出来,然后变成了k为偶数的情况,要把符号改变过来(2)否则的话,则一定至少有 1个非负数, 那么我们将最大的数取出来,然后变成了k为偶数的情况。#include<bits/stdc++.h>#define x first#define y secon原创 2020-10-13 19:51:14 · 579 阅读 · 0 评论 -
[蓝桥杯][2014年第五届真题]分糖果
题目链接:分糖果解题思路:模拟解题,先遍历所有的孩子,看看是否已经相同,如果是就退出,否则继续分。每一个孩子先减去自己的一半,然后从左往右开始添加自己被右边分到的糖果,最后再看哪个孩子是奇数,就添加。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespac原创 2020-10-04 10:03:17 · 420 阅读 · 0 评论 -
[蓝桥杯][2015年第六届真题]赢球票
题目链接:赢球票解题思路:从每一个位置开始试着枚举,模拟流程,找到第一个没有被访问过的数的下标,如果这个数等于正在数的数,那么标记这个数已经被访问过,重新从1开始数,否则继续数,然后找到下一个没有被访问过的数,如果已经不合法那么直接退出。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeo原创 2020-10-10 17:42:39 · 324 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]糖果
题目链接:糖果解题思路:状态压缩+动态规划,用二进制存储每个糖果是否买到过(1表示买到,0表示没买),20种糖果都买到的只有(1<<20)−1(1<<20)-1(1<<20)−1,给每一个数的状态都初始化标记,给每一袋糖果的种类都存在二进制里就会是一个数,这个数的二进制就表示这袋糖果有哪些种类。枚举每一袋糖果,买当前这袋与哪些已经买到过的状态的糖果转移过去。#include<bits/stdc++.h>#define x first#define原创 2020-10-15 17:09:30 · 1684 阅读 · 0 评论 -
[蓝桥杯][2013年第四届真题]危险系数
题目链接:危险系数解题思路:当去掉一个点z(z!=x,z!=y),要使得路径不通,那么只需要统计从点x到点y的所有总路径数,当经过一个点的次数等于总路径数,那么这个点就是符合要求的,即去掉这个点就能使得路径不同。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)using namespace std;typedef long long LL;typed原创 2020-10-03 13:21:28 · 226 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]Excel地址
题目链接:Excel地址解题思路:类似进制转化,但其实不是,每进一位n就多1,所有,进一位时-1#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long l原创 2020-10-12 09:33:49 · 220 阅读 · 0 评论 -
[蓝桥杯][2020年第十一届真题第一场]解码
解题思路:模拟,遍历每个位置如果他的下一个位置是数字就输出几个字符,如果不是字符就只输出一个#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long long .原创 2020-10-12 10:55:15 · 1753 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]小计算器
题目链接:小计算器解题思路:模拟就完了,注意几个点,每次输入数的时候记得更改一下进制,已经输出的时候也要转化一下最近的进制#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef un原创 2020-10-11 11:46:59 · 233 阅读 · 0 评论 -
[蓝桥杯][2013年第四届真题]错误票据
题目链接:错误票据解题思路:排序后遍历,如果两个数直接相同即为重号,如果两个数之间的值大于等于2即为断号。PS:难点在于如何输入。#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef unsigned long long ull; typedef pair<int,int>PII;typedef pair<do原创 2020-10-02 15:16:50 · 261 阅读 · 0 评论 -
[蓝桥杯][2020年第十一届真题第一场]整除序列
解题思路:签到题,直接暴力解,主要是开longlong#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long long ull; typedef pair&.原创 2020-10-12 10:49:43 · 618 阅读 · 0 评论 -
[蓝桥杯][2020年第十一届真题第一场]走方格
在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。输入格式输入一行包含两个整数 n,m。输出格式输出一个整数,表示答案。数据范围1≤n,m≤30输入样例1:3 4输出样例1:2输入样例2:6 6输原创 2020-10-12 11:11:51 · 840 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]外卖店优先级
题目链接:外卖优先级解题思路:贪心的思路求解,先对订单的时间从小到大排序,要减去到当前订单的外卖店的时间与上一次到达该店的时间,这段时间是没有订单的,然后加上订单的数量。最后判断哪些订单从某一时间起就没有订单即可#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define原创 2020-10-14 21:33:39 · 558 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]特别数的和
题目链接:特别数的和解题思路:枚举每一个数,判断该数的每一位是否包含2、0、1、9,包含就加上#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef原创 2020-10-15 17:17:54 · 251 阅读 · 0 评论 -
1880: [蓝桥杯][2017年第八届真题]九宫幻方
题目链接:九宫幻方解题思路:用原创 2020-10-12 09:33:30 · 270 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]合根植物
题目链接:合根植物解题思路:并查集可以把两个节点合并为一个集合,然后最后遍历有多少个节点等于本身,那就有多少个集合。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsig原创 2020-10-11 14:57:21 · 277 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]拉马车
题目链接:拉马车解题思路: 直接用string的函数模拟#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long long ull; typedef pa原创 2020-10-11 17:11:30 · 346 阅读 · 0 评论 -
[蓝桥杯][2016年第七届真题]四平方和
题目链接:四平方和这题有两种解法:1、暴力(但是容易被卡掉);2、二分解题思路:1、暴力就是枚举a,b,c的值,然后求出d值,判断是否合法,合法就输出;2、预处理出两个数的平方和,然后再枚举两个数,就可以求出结果。解法1(暴力)#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof原创 2020-10-10 21:13:48 · 260 阅读 · 1 评论 -
[蓝桥杯][2018年第九届真题]螺旋折线
题目链接:螺旋折线解题思路:左上角的点作为上面横线的基点,右上角的点作为右边竖线的基点,右下角的点作为下面横线的基点,左下角的点作为左面竖线的基点,找出规律即可。#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeo原创 2020-10-14 19:30:48 · 305 阅读 · 0 评论 -
竞赛根据数据范围选择算法
一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 107107 为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:原创 2020-10-16 20:43:39 · 341 阅读 · 0 评论 -
[蓝桥杯][2019年第十届真题]Fibonacci 数列与黄金分割
题目链接:Fibonacci 数列与黄金分割解题思路:当数据大时找不到思路,就先打表试一试,发现n=1~19的时候答案都是不同的,但是当n>=20的时候,答案是固定值,所有我们只需要求出n=21的斐波那契,因为1 ~19答案不同,但是n>=20都等于f[20]/f[21]#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define m原创 2020-10-14 20:49:21 · 822 阅读 · 0 评论 -
[蓝桥杯][2015年第六届真题]饮料换购
题目链接:饮料换购解题思路:简单模拟#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long long ull; typedef pair<int,原创 2020-10-09 20:37:40 · 315 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]k倍区间
题目链接:k倍区间解题思路:s[i]表示1~i的前缀和,每次累加i下标前,s[i]%k的余数的个数,就是一个k倍区间。这里有些难理解,例如: s[t]表示1 ~ t的前缀和,他们模k的余数为p, 那么当s[i] (i>k) 模k的余数也为p时,就证明t ~ i这一段和模k是等于0的,正好是k的倍数。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)原创 2020-10-12 09:34:12 · 229 阅读 · 0 评论 -
[蓝桥杯][2014年第五届真题]拼接平方数
题目链接:拼接平方数解题思路:因为数据范围1e6,所有只需要先把1e3内的平方数求出来,然后再检查a~b的每一个数。从最后一位数开始把当前数分割,如果不合法,就从最后两位数开始分割,直到整个数分割完后,还是不合法那就不合法。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)us原创 2020-10-04 10:31:53 · 332 阅读 · 1 评论 -
[蓝桥杯][2019年第十届真题]后缀表达式
题目链接:后缀表达式解题思路:如果没有-号,那么全部都是加的;但是如果有-,那么就可以看成-(x1-x2-x3-x4-)除了x1是需要减的,其他都能转化为+,如果小于0的数,也可以放在括号里,让他变为+#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a原创 2020-10-15 19:24:58 · 456 阅读 · 0 评论 -
[蓝桥杯][2013年第四届真题]幸运数
题目链接:幸运数解题思路:用STL的vector模拟就可以,具体看代码注释#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsigned long long ull; typ原创 2020-10-03 15:00:12 · 160 阅读 · 0 评论 -
[蓝桥杯][2014年第五届真题]地宫取宝
题目链接:地宫取宝解题思路:动态规划。在每一个位置的状态考虑,当前这个位置的状态是由哪些状态转移过来的。dp[i][j][u][v]表示在(i,j)这个位置,拿到u个物品,且这些物品的最大价值是v。我们可以考虑当前位置(i,j)拿不拿当前这个物品,如果不拿那么可以从dp[i-1][j][u][v]、dp[i][j-1][u][v]转移过来,表示上一个位置已经拿到了u个物品最大价值为v的。如果拿则可以从dp[i-1][j][u-1][c]、dp[i][j-1][u-1][c]转移过来,表示上一个原创 2020-10-09 15:17:25 · 1838 阅读 · 3 评论 -
[蓝桥杯][2015年第六届真题]生命之树
题目链接:生命之树解题思路:树形DP,先建边,每个节点的和至少是他本身,然后搜索该节点的子节点,每次判断子节点的值是否大于零,如果大于零就把该子节点加上,否则不要改子节点。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef原创 2020-10-10 20:07:46 · 192 阅读 · 0 评论 -
[蓝桥杯][2018年第九届真题]日志统计
题目链接:日志统计解题思路:双指针i表示右端点,j表示左端点,如果i~j区间<k那么每次都把i扩展的点的权值加进来,当i-j的距离大于等于k时,那么左端点往右挪,并删除点原先端点的贡献,然后判断当前扩展的点的热度是否符合要求,符合就打标记,最后遍历所有可能是帖子id,有标记的就是答案#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#defin原创 2020-10-13 17:10:35 · 242 阅读 · 0 评论 -
[蓝桥杯][2016年第七届真题]冰雹数
题目链接:冰雹数解题思路:题目要求输出的是表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。就是枚举1~n的每一个数,再模拟即可。#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;type原创 2020-10-11 09:19:07 · 732 阅读 · 0 评论 -
[蓝桥杯][2018年第九届真题]缩位求和
题目链接:缩位求和解题思路:由于最长是1000位的数字,因此全部加起来不会超过10000,先把每一位的数加起来,再判断如果大于9那就可以再缩位#include<bits/stdc++.h>#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using n原创 2020-10-13 14:50:52 · 454 阅读 · 0 评论 -
[蓝桥杯][2014年第五届真题]Log大侠
题目链接:Log大侠解题思路:由于此题的数据有点水,所以暴力就可以过,正解是线段树,贴上代码自行理解。暴力代码#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef long long LL;typedef unsign原创 2020-10-09 17:17:16 · 236 阅读 · 0 评论 -
[蓝桥杯][2014年第五届真题]生物芯片
题目链接:生物芯片结论:完全平方数的因子数为奇数完全平方数的因子数为奇数完全平方数的因子数为奇数解题思路:一个灯是否开着与它的因子个数有关系,如果它的因子个数为奇数,则关闭。完全平方数的因子数是奇数的,但是题目说了1的倍数不算,那么去掉1这个因子,完全平方数的因子数为偶数,只需要把L ~ R区间的因子个数减去L ~ R区间的完全平方数即可。一个区间的完全平方数为sqrt(R)−sqrt(L)sqrt(R)-sqrt(L)sqrt(R)−sqrt(L)。PS:要强转格式#include<原创 2020-10-09 16:37:57 · 279 阅读 · 0 评论 -
[蓝桥杯][2017年第八届真题]包子凑数
题目链接:包子凑数解题思路:这里用到裴蜀定理 :任意两个数的组合必定是他们gcd的任意两个数的组合必定是他们gcd的倍数。同样可以推广到更多数:如果这些数的gcd是d,那么他们的组合是d的倍数,如果d不是1,那么必然有无限个数无法被组合出来。首先结论是如果所有的数的最大公约数不为1,就有不能凑出的数,并且小于10000,否则就有无限个体积最大是100,因此不能凑出的最大的数是N = (99 - 1) * (100 - 1) - 1,即最大体积是N。再用完全背包一推就出来答案了#include原创 2020-10-12 09:35:07 · 376 阅读 · 0 评论 -
[蓝桥杯][2016年第七届真题]路径之谜
题目链接:路径之谜解题思路:搜索每一天能到达右下角点的路径,经过每一个位置时,给它的x、y都加上1的贡献,最后到达右下角时,如果x、y的值等于输入的箭靶的数目则为正确答案#include<bits/stdc++.h>#define x first#define y second#define mem(h) memset(h,-1,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std;typedef原创 2020-10-11 09:07:02 · 463 阅读 · 0 评论