【蓝桥杯提高】
文章平均质量分 51
蓝桥杯提高题
不牌不改
※ 接受自己很普通
展开
-
蓝桥杯2019年第十届省赛真题-扫地机器人
题目题目链接题解二分+贪心。二分模板看到这道题第一时间想到的就是二分和动规。仔细一看二分有戏,能check出来,所以决定用二分好好想想。(主要是因为我动规太菜了,怕了)二分时间,准确的说我们二分的不是时间,而是覆盖范围,也就是枚举每个小机器人扫多少个方块;初始化l=1,一个小机器人最少扫一个,r=n,如果只有一个小机器人,那么它要扫全部。重点是check函数。如何判断每个小机器人扫m块地是否可行呢?一开始我的**(错误)思路**是以m为步长枚举每一段长度为m的区间,看看是不是存在小机器人原创 2022-04-06 22:02:46 · 1280 阅读 · 2 评论 -
蓝桥杯2019年第十届国赛真题-大胖子走迷宫
题目题目链接题解BFS。整体思路:将位置信息和时刻信息放入队列,根据时刻信息判断当前时刻小明的大小,如果大小为1×11×11×1则不能原地停留,因为没意义啊,停留是为了让自己的肚子减小,但是1×11×11×1时肚子已经最小了,所以只有当大小不是1×11×11×1时才会进行停留操作,对应到代码上就是位置信息不变,时刻信息+1入队;其他部分就是和基础BFS差不多了,遍历四个方向,如果挺着当前的肚子会遇到障碍,则continue;如果之前走到过该位置,则continue;如果肚子发生越界,则contin原创 2022-04-06 19:49:52 · 841 阅读 · 0 评论 -
蓝桥杯2020年第十一届省赛真题-子串分值
题目题目链接题解思维。考虑每个字符对最终答案的贡献,每个字符的贡献为其左侧连续与之不相同的字符个数+1乘以其右侧与之不相同的字符个数+1。样例:ababc第一个字符a的贡献:(0+1) * (1+1) = 2a, ab第二个字符b的贡献:(1+1) * (1+1) = 4ab, b, ba, aba......第五个字符c的贡献:(4+1) * (0+1) = 5ababc, babc, abc, bc, c一开始以为滑动窗口,后来发现不行。就考虑每个字符的贡献。原创 2022-04-06 18:44:12 · 490 阅读 · 0 评论 -
蓝桥杯2019年第十届真题-人物相关性分析
题目题目链接题解字符串 + 滑动区间不想写题解了 bug没de出来。吃饭去了。代码我的代码,不知道为什么一直就是91,有大佬帮忙看一下吗?#include<bits/stdc++.h>using namespace std;int n, ans;string s;vector <int> a, b;bool check (int p, int n) { // 处理独立单词 if (p == 0) { if (!isalpha (s[p+n]))原创 2022-04-06 14:25:07 · 315 阅读 · 0 评论 -
蓝桥杯2019年第十届省赛真题-后缀表达式
题目题目链接题解思维+数学(?)说三点吧!后缀表达式就是无括号的中缀表达式,也就是我们平时的加减运算去掉括号、重新排序,且仍能保证运算(优先级)跟之前一样的表达式。中缀表达式可以通过加括号“随意”改变运算顺序,改变优先级,所以后缀表达式也是一样的,所以在理解的时候我们完全可以理解为一堆数进行排列,在这些数中插入若干个加若干个减,同时还可以加括号改变运算顺序,问结果最大是多少。结论:相比于加号,减号的存在非常特殊!① 如果全是加号,答案是所有数字直接相加;② 如果存在减号,Ⅰ 如原创 2022-04-06 12:29:55 · 655 阅读 · 0 评论 -
蓝桥杯2020年第十一届国赛真题-重复字符串
说在前面,本题的标程是存在问题的,下面会分析标程与正确程序题目题目连接题解思维吧。整体思路:将字符串分割成k段,假设每段m个字符,我们统计每段相同位置的每种字符出现的次数,每段都统计上后,每个位置(0 ~ m-1)都取出现次数最多的字符作为要变成的字符,将每一段的对应位置的字符都变成这个字符就行了,因为这个字符在该位置出现最多,其他字符变到该字符能保证次数最少,如果要是变成别的字符,那么出现次数最多的字符变动次数会很多,并非最优解。累加每个位置(0 ~ m-1)上变换次数就是答案。关于标程出原创 2022-04-06 10:12:58 · 1117 阅读 · 4 评论 -
蓝桥杯2019年第十届省赛真题-糖果
题目题目链接题解数位DP。a[i]表示第i包糖果的状态;f[i]表示i这种状态所需的最少糖果包数。状态就是指一串二进制,最低位表示是否能吃到第1种糖果,次低位表示是否能吃过第2种糖果。转移方程:f[j | a[i]] = min (f[j | a[i]], f[j] + 1)含义是j | a[i]这种选了第i包糖果的状态所需的最少糖果包数为构成状态j的最少包数+1。s1 | a[i]表示没有拿第i糖果所能吃到的糖果的状态,与a[i]按位或实现将s2在a[i]中是1的位置上的数变为1,相当于原创 2022-04-05 22:42:25 · 502 阅读 · 0 评论 -
蓝桥杯2019年第十届省赛真题-修改数组
题目题目链接题解思维+并查集。难的不是使用并查集,而是看出来能用并查集。由于之前做过,有点印象,所以一下想到了并查集大概一说,fa[x]表示x要更新到多少,每次将x的fa更新为多少?更新为x+1?不一定,这得看x+1更新到了多少,如果x+1在之前都更新到了x+k,那么x肯定不能仅更新到x+1,而是更新到x+k+1。整体来看,我们x的更新取决于x+1,x+1取决于x+2,……这些数的fa值都可以指向同一个数x+k+1。有点并查集的意思吧。题解连接注意卡cin,cout。具体题解看别人原创 2022-04-05 21:51:14 · 570 阅读 · 0 评论 -
蓝桥杯2019年第十届省赛真题-外卖店优先级
题目题目链接题解思维吧?(离散化)虽然N,M,T都是1e5,但是订单数量有限,这就导致想让每个店铺每个时间都有订单是不可能的,如果店铺种类多了起来,由于订单有限,那么每个店铺得到的订单就会很少,对于两个订单之间消耗的得分就可以避免遍历,直接通过减法得到。因此我们只需要遍历每个订单即可。先将订单按时间从小到大排序,保证按时间升序排列,再处理即可。注意两个点:如果存在多个同一时刻同一店铺的订单,需要特殊处理,因为该店铺的上一次订单时间与这一次订单时间之差为0,需要减去的两次订单之间导致得分降低原创 2022-04-05 21:17:53 · 720 阅读 · 0 评论 -
蓝桥杯算法提高VIP-凶手
题目题目链接题解这种题可以选择手算。一般我们都是选择枚举哪个人是坏的,判断是否满足题目给出的条件。看下面的宏定义吧,我觉得我的这个实现方法应该是比较简洁易懂了。代码#include<bits/stdc++.h>#define A (!bad[0])#define B (bad[0] || bad[2])#define C (!A && !B)#define F (bad[5])#define D (!C && !F)#define E原创 2022-04-03 16:42:05 · 606 阅读 · 0 评论 -
2017年蓝桥杯省赛-正则问题
题目题目链接题解DFS。看代码好简单,但感觉真想不出来。最初的思路是先去掉外层多余括号,再确定 | 的位置,以 | 作为分界线,递归左右两侧;如果没有 | ,那么就按括号进行分割,比如xx(x|xx)分割成xx和(x|xx),但是比较难实现,类似的(x|xx)xx,反正不好实现;而且去掉外层多余括号也没实现出来。代码#include<bits/stdc++.h>using namespace std;int k = 0;string s;int dfs () {原创 2022-03-29 09:30:45 · 1146 阅读 · 0 评论 -
第二届蓝桥杯-最小公倍数问题
题目题目链接题解数学 + 高精度。如果直接按照计算多个数连续计算最小公倍数,那么显然要经过高精度乘法、高精度除法,两个高精度过于麻烦了。换个思路,我们将每个数都分解质因数,全部数的最小公倍数必然由分解得到的质因数相乘得到,而且构成最小公倍数的每种质因子的个数等于某个数分解得到该质因子最多的个数,举个例子:n=6,1,2,3,4,5,6分解质因子得到{1}, {2}, {3}, {2,2}, {5}, {2,3},那么构成这些数的最小公倍数的质因子2的个数应该为2,因为4存在两个质因子2,提供的2原创 2022-03-28 09:58:08 · 663 阅读 · 0 评论 -
2021年蓝桥杯A组省赛-左children右sibling
CXXX有毛病?“左孩子右兄弟”字眼很敏感吗???题目题目链接题解贪心,DFS。以 uuu 为根的子树选择包含节点最多的以 vvv 为根的子树作为最后连接的右兄弟能保证树向下延展的最多。所以重点转换为了计算以 uuu 每个子结点为根的子树中包含节点最大的个数,递归计算每个子树的节点数(不含根节点),每棵子树能构成的最深深度为其直接子节点数量+能构造出来最深的二叉树的深度(并不是全部节点数量)一开始想的是每次都以最大的子树向下扩展,但是写代码的时候想成了以直接子结点最多的子树向下扩展。.原创 2022-03-27 10:02:25 · 1218 阅读 · 0 评论 -
2021年蓝桥杯A组省赛-回路计数
题目题解动态规划。最经典的哈密顿回路的题就是ACwing动态规划基础课的题和算法进阶指南中的了,都是用于讲解状压dp的。(但我还是没想到)f[i][j]f[i][j]f[i][j] 表示从起点(任意)走到 jjj ,经过的所有点用状态 iii 表示,所有的方案数。iii 被我们认为是个二进制数,每一位表示从起点到 jjj 是否经过对应的点。从最低位到最高位分别对应点 0∼n−10\sim n-10∼n−1,状态 iii 的第 kkk 位(从低到高,从 000 开始)二进制位为 111 表示状态原创 2022-03-26 21:58:41 · 2328 阅读 · 2 评论 -
2020年蓝桥杯国赛-答疑
题目题目链接题解贪心。有点像“排队打水”。比较好想,而且我甚至都能证明。贪心思路:按照 s+a+es+a+es+a+e 从小到大排序即可。证明:首先,每个人的 sss 和 aaa 都可以看成是一个部分,记为 ddd,因为这段时间只是干的事不同,本质都是打卡前花费的时间。规定 pip_ipi 表示第iii个人,aia_iai 和 bib_ibi 分别对应第iii个人的 ddd 和 eee。排好序后为 P1P2...PiPi+1...PnP_1P_2...P_iP_{i+1}...原创 2022-03-19 17:05:01 · 976 阅读 · 4 评论 -
2018年蓝桥杯省赛-日志统计
题目题目链接题解贪心,尺取。首先按照时间从小到大,对输入的每一组tststs和ididid进行排序;遍历每一对,取当前这对的tststs作为题目中的TTT,让另一个指针不断地向前走,直到指针所指的对的tststs大于等于了T+DT+DT+D就停止向前走,指针所经过的全部对的ididid都在[T,T+D)[T,T+D)[T,T+D)内,所以用cnt[i]表示第i个文章在[T,T+D)[T,T+D)[T,T+D)内被点赞的数量,如果数量大于KKK,则说明找到一个答案;指针到头了,我们的遍历就可以再进原创 2022-03-19 15:34:19 · 155 阅读 · 0 评论 -
第十一届蓝桥杯C/C++B组省赛-平面切分
题目题目链接题解计算几何。存在这么一个结论:向一个平面中加入一条直线,分两种情况,若新加入的直线不与平面中的任何一条直线重合,则向平面中加入该直线对平面部分数的贡献为:平面中已经存在的直线与该直线相交得到的不同的交点数 + 1;若新加入的直线与平面中的某条直线重合,则该直线没有贡献.特别地,当平面中没有直线时,平面部分数为 1。举几个例子:代码#include<bits/stdc++.h>#define PDD pair <long double,原创 2022-03-16 21:32:29 · 814 阅读 · 1 评论 -
2018年蓝桥杯C/C++B组国赛-调手表
题目题目链接题解BFS。题目大意:假设当前的数是000,可以选择+k+k+k或+1+1+1再对nnn取模来改变当前的数,因为对nnn取模,所以当前的数总共可以变为0∼n−10\sim n-10∼n−1,求从000第一次变成这nnn个数所需要加的最多次数。也就是说000变成111需要加333次,000变成222需要加444次,那么答案就是较大的数444。一开始想的是递推(动态规划),但是感觉转移不了。如果顺序枚举每个数,那么转移方程应该表示为该数从+k+k+k转移过来或从+1+1+1转移过来,原创 2022-03-16 20:07:12 · 595 阅读 · 0 评论 -
2017蓝桥杯C/C++B组国赛-发现环
题目题目链接题解并查集 + 最近公共祖先。整体思路:并查集用于判断是否出现环,出现环就记录下来导致环的边两端的点,求两个点的最近公共祖先,从两个端点向上找到全部的祖先直到二者的最近公共祖先,排序输出。思路太清晰了,就是看你有没有背过模板。(看到这个题秒出思路,但是忘记怎么写LCA了,看了看yxc,直接一发入魂)代码#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;int idx, e[N原创 2022-03-16 10:59:08 · 950 阅读 · 0 评论 -
2017蓝桥杯C/C++B组国赛-瓷砖样式
题目题目链接题解DFS。方案需要满足的要求:只能有黄和橙两种颜色;必须填满;任何一种颜色都不允许同时出现在 2×22×22×2 的方格中;任意一种颜色图案都必须能由 2×12×12×1 或 1×21×21×2 的长方形瓷砖拼成;瓷砖不能切割,不能重叠,也不能只铺一部分;只考虑组合图案,忽略瓷砖的拼缝.举几个反例:最后一种容易忽略。想过二进制枚举,但是二进制枚举的话,对于枚举到的每种状态不好判断是否满足要求。所以还是得用DFS。由于要求两种颜色的图案都要能用 2×12×原创 2022-03-15 16:59:36 · 512 阅读 · 0 评论 -
2017年蓝桥杯B组C/C++省赛-K倍区间
题目题解思维。暴力的话是会超时的,但也可以骗点分。(采用差分数组暴力)讲一下AC思路。统计出来每个前缀和取模kkk后结果的个数,比如 cnt[0]cnt[0]cnt[0] 表示前缀和取模 kkk 等于 000 的前缀个数;cnt[1]cnt[1]cnt[1] 表示前缀和取模 kkk 等于 111 的前缀个数;……假设前缀和取模kkk等于111的全部前缀如下:总共三个前缀,我们考虑任选其中的两个前缀,长前缀比短前缀多出的部分的数是否可以保证求和取模kkk等于000?假设短前缀和为 Su原创 2022-03-15 11:31:53 · 154 阅读 · 0 评论 -
2017年蓝桥杯B组C/C++省赛-分巧克力
题目题目链接题解二分。想到二分比实现二分要难点。可行解部分可以与不可行解部分完美地分隔开来。绿色部分是分成的巧克力比较小时都可以满足,而大于一定程度的时候就不可行了。所以可以将其抽象成小于可行,大于不可行的二分问题。在判断时,遍历全部巧克力,每个巧克力分割成的小巧克力数相加。分割成的小巧克力数目的计算方式为,高整除枚举到的xxx,宽整除枚举到的xxx的乘积。代码// #include<bits/stdc++.h>using namespace std;cons原创 2022-03-15 10:49:11 · 548 阅读 · 0 评论 -
2017年蓝桥杯B组C/C++省赛-包子凑数
题目题目链接题解数论、动态规划。数论知识:如果 aaa 和 bbb 互质,则 x∗a+y∗bx*a+y*bx∗a+y∗b 无法得到的最小值为 a∗b−a−ba*b-a-ba∗b−a−b,又即 (a−1)∗(b−1)(a-1)*(b-1)(a−1)∗(b−1)。比如 222 和 333,不可以构成 111,可以构成 222,可以构成 333,可以构成 4=2+24=2+24=2+2,可以构成 5=2+35=2+35=2+3,……,之后的数都可以构成。111 是无法由 222 和 333 构成的最大原创 2022-03-15 10:19:36 · 454 阅读 · 0 评论 -
2021蓝桥杯-最少砝码
题目你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意 小于等于 N 的正整数重量。那么这套砝码最少需要包含多少个砝码?注意砝码可以放在天平两边。样例输入7样例输出3评测用例规模与约定对于所有评测用例,1 ≤ N ≤ 1000000000运行限制最大运行时间:1s最大运行内存: 512M题解题解链接代码找规律1#include <iostream>using namespace std;int main () { int ans =原创 2022-03-11 16:13:44 · 735 阅读 · 0 评论 -
2016年蓝桥杯省赛C/C++ A组-剪邮票
题目如下图,有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。 (仅仅连接一个角不算相连)比如,粉红色所示部分就是合格的剪取。题解全排列+递归 或 DFS+递归。与2013年的剪格子几乎一样,但是13年的剪格子由于数据比较特殊,所以纯DFS就可以AC,但是其本质与本题是相同的,如果真正正确,那么不能纯DFS。纯DFS只能实现依次遍历,即S型遍历,但是无法实现T型遍历,而本题很显然存在T型连通的情况,因此纯DFS遍历失效。DFS的整体思路:从这12个数中原创 2022-03-10 18:19:09 · 563 阅读 · 0 评论 -
蓝桥杯2015年第六届真题-生命之树
题目题目链接题解树状DP。基础树状DP题了。首先先讲一下题目什么意思(起初,我就理解错了)题目说在树上找一些点,这些点满足:在这些点中任取两个点a和b,都能够找到一条路径连通。我这样一翻译是不是感觉清晰多了,其实就是找一个点集,保证点击任意两点可达,这就是在找个连通区域。(最开始,我理解成了要找一条直径使得直径上的点价值加起来最大……)dp[i][0/1]表示以i为根的子树不选取根节点i和选取根节点i构成连通区域的最大分数;(比较难以描述)dp[i][0]是不选根节点,意味着以i为根原创 2022-03-08 22:37:20 · 148 阅读 · 0 评论 -
蓝桥杯2021年第十二届真题第一场-杨辉三角形
题目题目链接题解思维。杨辉三角对称,所以我们只看左半边(含中间列)。将全部的1忽略掉,中间列具有特点,C21C_2^1C21、C42C_4^2C42、C63C_6^3C63、……、C2xxC_{2x}^xC2xx;每个中间列的元素都可以视为一条斜线的一端,如上图的黄线,写线上的元素也具有特点,自右上角至左下角C2xxC_{2x}^xC2xx、C2x+1xC_{2x+1}^xC2x+1x、……、C2x+ixC_{2x+i}^xC2x+ix,且这些数是满足单调递增的。如果一个数原创 2022-03-08 15:42:03 · 1154 阅读 · 0 评论 -
蓝桥杯历届试题-小朋友排队
题目题目链接题解树状数组求逆序对。好早之前写过逆序对的三种求法(看明白了树状数组求逆序对的方法后本题就很轻松了)本题思路:高矮不满足要求的相邻两个小朋友要互换位置,且二者的不高兴程度都是增加,所以对于某个小朋友而言,其左侧的高个会与其交换位置导致其不高兴程度增加,其右侧的矮个也会与其交换位置导致其不高兴程度增加。这与逆序对的概念是不同的,逆序对可以理解为“某个数前面有多少比其大的数的个数”,但很显然,本题对于一个数而言,不仅要计算其前面比其大的还要计算后面比其小的。我们会计算某个数前面原创 2022-03-06 22:44:58 · 233 阅读 · 0 评论 -
蓝桥杯2013年第四届真题-黄金连分数
题目黄金分割数0.61803… 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。比较简单的一种是用连分数: 1黄金数 = ---------------------原创 2022-03-06 14:02:01 · 169 阅读 · 0 评论 -
蓝桥杯2015年第六届真题-垒骰子
题目题目链接题解动态规划 或 矩阵快速幂。动态规划这个方法只能得到 78% 的分数,无法 AC,但确实比较好想。笼统地说一下状态定义和转移方程。dp[i][j]表示从下向上数第i个骰子的上面点数为j的情况下,靠下的i个骰子摆放的全部方案数。(这个定义不准确,后面会说)那么转移方程可以比较容易地写出来了,第i个骰子上面点数为1,对应地其下面点数为4,因此第i个骰子上面点数为1的方案数(即dp[i][1])为第i-1个骰子上面点数不与第i个骰子下面点数4相排斥的情况数之和,即Σ{dp[i-1]原创 2022-03-05 16:38:09 · 909 阅读 · 3 评论 -
蓝桥杯2017年第八届真题-观光铁路
题目题目链接题解根本没看懂什么意思,样例都看不懂。规律:每个城市的期望时间等于所有城市的总度除以该城市的度。代码#include<bits/stdc++.h>using namespace std;int n, m, a, b, sum, d[100];int main(){ cin>>n>>m; while(m--) cin>>a>>b, d[a] ++, d[b] ++; for(int i = 1;i <原创 2021-08-22 10:17:57 · 418 阅读 · 0 评论 -
蓝桥杯2017年第八届真题-对局匹配
题目题目链接题解动态规划。题目大意:在一个具有nnn个元素的集合中选取尽可能多的数,保证这些数不存在两个数相差为kkk,求个数。(题目讲的乱七八糟)首先,我们统计每个数的个数,c[i]表示有多少个i;对于每个数,都可以选或者不选,若我们不选数i−ki-ki−k,则我们可以选数iii,也可以不选数iii;但若我们选数i−ki-ki−k,则我们绝不能选数iii了。还有一种很奇怪的情况,当数iii的个数为0时,我们根本就无法选这个数,因此我们完全可以选数i−ki-ki−k或者不选数i−ki-k原创 2021-08-21 23:10:42 · 511 阅读 · 0 评论 -
蓝桥杯2017年第八届真题-发现环
题目题目链接题解并查集+DFS。并查集比较明显,因为要判断有没有环;思路也很简单,若不停加边,若两个点的fa是一样的,则说明再加上这两点之间的直接 边就会出现环,因此这两个点一定位于环上;我们以两点中的其中一个点为起点,dfs寻找另一个点,记录dfs路径上选择的点,当到达另一个点时,说明找完了环上的点,排序输出即可。注意find函数路径压缩,否则超时。代码中还有一些降低时间复杂度的细节操作,详见代码。代码#include<bits/stdc++.h>using name原创 2021-08-20 10:37:47 · 259 阅读 · 0 评论 -
蓝桥杯2015年第六届真题-赢球票
题目题目链接题解暴力+模拟。枚举每次从哪个位置开始,也就是有n种情况要枚举;对于每一种情况,我们都模拟这个过程,更新最大值,取牌操作结束的条件是还未被取走的数中的最大值都小于报的数了,说明没有办法取走任何一张了,此时结束;注意答案要求获取的牌上的值之和,而不是牌数。代码中:a数组是初始的输入数组,是一程不变的;c数组存储的是每次枚举从哪个位置的数组,存储每种情况;b数组算是临时数组,用于暂存每轮报数结束后还剩哪些数未被取走,本轮结束后会赋值回c数组中;cnt表示c数组牌的个数;n原创 2021-08-19 10:35:43 · 304 阅读 · 2 评论 -
蓝桥杯2015年第六届真题-生成树计数
题目题目链接题解暴力DFS。没想到直接暴力DFS就行。暴力选边,对于每条边可以选择选,也可以选择不选;dfs过程可以有两种方式:其一:每次选此边时都先判断一下,选了此边会不会成环,若成环,则不能选此边,若不会构成,则可以选此边。其二:每次选边不进行判断,而是深搜到底且选取边的个数满足要求时,对全部被选的边进行判断,若不构成环则答案加一。两种方式均可,第一种耗时少;两种方式分别对应代码1,代码2。判断是否为环利用的是并查集的思想(有点类似于最小生成树的克鲁斯卡尔算法):第一种方式中判断原创 2021-08-18 23:18:20 · 430 阅读 · 4 评论 -
蓝桥杯2015年第六届真题-广场舞
说在前面,其他博客中的代码应该保证不了健壮性,我这个(应该)可以!题目题目链接题解数学:计算几何。提示:这题默认好像是顺时针或逆时针输入坐标,也就是说先后输入的两个点一定是多边形的一条边。前置知识:PNPoly算法何为PNPoly算法算法?通俗的来讲,这个算法用于判断一个点是否位于一个封闭的多边形中。判断方式是以这个点为始端向一个选定的方向作射线,若射线穿过奇数条多边形的边,则说明点位于多边形内,为偶数则说明不在多边形内。原理很简单,若这个点位于多边形内部,那么这条射线第一次穿过多原创 2021-08-18 16:43:25 · 210 阅读 · 0 评论 -
蓝桥杯2015年第六届真题-机器人塔
题目题目链接题解DFS+二进制枚举。经典dfs之一。好像比较经典的那个同型dfs题叫“符号三角形”?可以看出上面一行的安排方式均由下面一行的安排方式决定,因此我们只要定好最后一行,那么上面的安排方式均可以由下行推出,且最后一行固定则整个三角形安排方式唯一。我们用000表示AAA,111表示BBB,这是由AAA和BBB出现的条件导致的,当两个字母一致时可以放AAA,当两个字母不一样时放BBB,这与异或运算不谋而合,因此000表示AAA,111表示BBB时有,A^A = B^B = A、B^A原创 2021-08-17 20:52:49 · 252 阅读 · 0 评论 -
蓝桥杯2016年第七届真题-碱基
题目题目链接生物学家正在对n个物种进行研究。其中第i个物种的DNA序列为s[i],其中的第j个碱基为s[i][j],碱基一定是A、T、G、C之一。生物学家想找到这些生物中一部分生物的一些共性,他们现在关注那些至少在m个生物中出现的长度为k的连续碱基序列。准确的说,科学家关心的序列用2m元组(i1,p1,i2,p2…im,pm)表示,满足:1<=i1<i2<…<im<=n;且对于所有q(0<=q<k), s[i1][p1+q]=s[i2][p2+q]=原创 2021-08-17 20:14:01 · 667 阅读 · 0 评论 -
蓝桥杯2016年第七届真题-路径之谜
题目题目链接题解DFS。半模板题,就多了个限制,这个限制可以作为剪枝条件剪掉,也可以作为限制条件防止走错误的步。下面代码中的check函数和dfs中第二个continue的条件就是利用了题目中对箭数的要求。代码#include<bits/stdc++.h>using namespace std;const int N = 1010;int dx[] = {0, 0, 1, -1};int dy[] = {1, -1, 0, 0};int n, vis[N], bes原创 2021-08-17 15:39:36 · 145 阅读 · 0 评论 -
蓝桥杯2015年第六届真题-奇怪的数列
题目题目链接题解实现题。太简单了,就是遍历字符串,拼接一下就可以了。代码#include<bits/stdc++.h>using namespace std;string s;int m;int main(){ cin>>s>>m; while(m--) { string ss; int cnt = 1; for(int i = 1;i < s.size();i ++) { if(s[i] == s[i-1]) cn原创 2021-08-17 15:06:58 · 213 阅读 · 0 评论