蓝桥杯
想出成果的acmer
当你越来越漂亮的时候,自然有人关注你,当你越来越有能力时,自然会有人看得起你,改变自己,你才有自信,梦想会慢慢的实现,要做好你自己,懒惰可以毁掉一个人,勤奋可以激发一个人,不要等到夕阳西下的时候才对自己说如果当初…如果…我就会怎么样,之类的话,都已经晚了,我只想告诉你一句话:要做一个连自己都羡慕的人!
展开
-
第十三届蓝桥杯省赛B组 第10题(LCDS?找规律.)
题目题意: 给定n个数,要求用魔法把n个数全都变成1。魔法:将一段连续区间的数ai变成sqrt(a[i]/2+1)思路: 一个数最多施展魔法6次即可,可以预处理出每个数变到1的路径。实质是找到两个数之间的LCDS,最长公共下降子序列,只计算开头那个数的花费,其他数的花费记为0。但是我们发现,如果两个数的路径上只要有一个数相同,那么后边的数就会全都相同,因为变换的函数都一样的。所以只要从大到小比对两个数的变换路径,找到第一个相同的数,之后的数都不会产生贡献。时间复杂度: O(n)代码:// Prob原创 2022-04-14 11:19:08 · 231 阅读 · 0 评论 -
第十三届蓝桥杯省赛B组 第8题(布响丸啦)
题目题意: 给定n个二维平面的地雷,给定m个导弹,可以引爆半径r以内的地雷,而半径r以内的地雷又可能引爆其半径r内的其他地雷。问最多能引爆多少个地雷。思路: dfs或者bfs叭. 用unordered_map<ll,int> 记录对应位置的地雷,只需要记录对应坐标的地雷个数和最大半径即可。因为unordered_map不支持用pair作key,可以做一个偏移,(1e9+1)x+y作为key,也可以唯一识别,至少比map快多了。然后还可以减少点枚举,比如不用2r2r的枚举,x枚举2r,y原创 2022-04-11 22:01:56 · 286 阅读 · 0 评论 -
第十三届蓝桥杯省赛 B组 第10题 (可以暴力,也可以用set维护,但是不会维护QAQ)
题目参考了带lao的题解https://www.acwing.com/solution/content/110229/题意: 给定n个数,要把数组中的所有元素变为1。你有魔法,可以把任意连续个相同的数x变成sqrt(x/2+1)。求至少用多少次魔法思路: 显然,先对大的数使用魔法更优,有机会合并。可以用暴力,每个数变5、6次就变成1了,不看/2,开根号也就6次,有/2更快。可以记录每个数变到1的路径,从小到大。把本题逆过来,数组中所有数都为1,变成输入的数组。以样例为例,只要最后一次是2变成1的并且原创 2022-04-11 20:35:34 · 285 阅读 · 0 评论 -
第十三届蓝桥杯省赛 第9题 (这个dp当时没想出来,就惦记那个暴力,我的建议是remake)
题目题意: 初始有2升酒,有n次翻倍的机会、m次-1的机会,需要将所有的机会用完。(当还剩0升酒时-1是非法行为)求有多少种方案可以使得最后一次是-1,并且-1以后剩余0升酒。思路: 当时我都往dp的方向想,现在想来,属于是犯病了。就惦记那个暴力骗分,埋了叭。f[i][j][k]: 已经用了i个翻倍、j个-1,此时是k升酒的方案数。尽管第三维度可以一直翻倍,但是超过m的值都是没有意义的,因为不可能减少到0了,所以第三维枚举到m就够用。f[i][j][k] += f[i-1][j][k/2] (原创 2022-04-11 19:27:23 · 313 阅读 · 0 评论 -
第十三届蓝桥杯省赛B组 第7题(dp都不会QAQ)
题目题意: 给定两种积木,一个是|型一个是L型,用他们铺满n2的矩阵,求方案数。(n <= 1e7)思路: dp.看带佬写的,有猜的成分,但是对了,问题不大。反正我不会证明。f[i] = f[i-1] + f[i-2] + 2f[i-3] + 2f[i-4] …f[i-1] = f[i-2] + f[i-3] + 2f[i-4]…时间复杂度: O(n)代码:在这里插入代码片...原创 2022-04-11 19:19:56 · 159 阅读 · 0 评论 -
第十三届蓝桥杯省赛B组 第六题(前缀和+双指针)
题目题意: 给定n*m的矩阵,求有多少个子矩阵满足矩阵内和<=k。(n,m<=500)思路: 降维。枚举列l到r,然后把[l,r]列的数的和看作一个数,那么只看行就具有了单调性。问题转变为在一个一维数组中求有多少个连续子数组,和<=k。用双指针维护即可。时间复杂度: O(n * m * m)代码:#include<bits/stdc++.h>using namespace std;const int N = 502;typedef long long ll;t原创 2022-04-11 16:54:55 · 174 阅读 · 0 评论 -
第十三届蓝桥杯省赛 B组 第5题(简单贪心都不会,我的建议是remake)
题目题意: 给你俩数A、B,是奇异进制的。就是每一位的进制不一样。至少是2,至多是n。求最小的A-B。保证A>=B思路: 直接贪心就行,都保证A>=B,每个进制都取尽可能小即可,但是要保证是合法的。如果A的位数>B的位数,记得在B前边补0,也就是说弄个偏移量即可。时间复杂度: O(n)代码:#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm&原创 2022-04-10 21:46:36 · 525 阅读 · 1 评论 -
谢邀,人在山东,蓝桥杯省赛已寄。
感觉连省一都拿不到了,做的太烂了,还有很多不该有的失误。不过也问题不大,已经有国二了,反正只有拿到国一才有用,就这个水平拿国一确实欠火候。 在代码源oj测了测,只有前四题拿了满分。+30+?,第五题进制转换位数一样确实写的没毛病,如果A的位数多我忘了在前边补0了,或者说偏移,寄。+10.5,第六题子矩阵不会,维护了二位前缀和然后枚举的起点和终点。+0,第七题积木没想起来dp,都1e7了,还在想数学规律,太离谱了。不过赛后推的式子也推错了,反正都不会。+0,第八题扫雷暴力倒是写出来了,我发现我原创 2022-04-10 20:54:35 · 600 阅读 · 9 评论 -
2018年第九届蓝桥杯 省赛 编程题题解
题目A.递增三元组题意: 给定三个数组,求有多少个三元组,满足Ai < Bj < Ck.思路: 枚举中间那个数组,二分找即可。(做过一次还是做错,太逆天了,每次都下意识枚举第一个数组,但是显然不满足单调性.)时间复杂度: O(nlogn)代码:#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<set>#in原创 2022-04-08 16:30:01 · 620 阅读 · 0 评论 -
第十届蓝桥杯省赛 C(什么找规律)
题目题意: 给定n个+号,m个-号,n+m+1个数。任意组合一个后缀表达式,输出最大值。思路: 凭感觉,南京站签到题做过一个类似的,也是找规律。这个要求组合后缀表达式,其实是可以任意添加括号的,要是让我输出序列我还真不会,但是求最大值还能操作操作。1.全是正号,直接输出和即可,没有操作空间,特判增加点骗分的可能性。2.存在负号,感性来讲负数都可以看作正数。如果只有一个负号,把所有负数扔到括号里就行。而如果有多个负号哩,可以一个负号对应一个负数,最后一个负号对应剩余的负数。如果负号比负数还多,只要把原创 2022-04-07 22:04:39 · 188 阅读 · 0 评论 -
第十届蓝桥杯省赛 B(坏了,不会签到了)
题目题意: 太长了,不想写。思路: 可以不按时间排序,我们可以发现每个点有没有贡献是独立。可以把每个点相关的外卖存起来,然后按照时间排序。模拟即可。时间复杂度: O(nlogn)代码:#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<set>#include<map>#define mem(a,x) memse原创 2022-04-07 21:51:13 · 156 阅读 · 0 评论 -
第十二届蓝桥杯省赛第一场 C(什么找规律)
题目题意:思路:时间复杂度:代码:原创 2022-04-07 20:06:36 · 152 阅读 · 0 评论 -
2021年蓝桥杯省赛 E(带权并查集)
题目题意: 给定n个点,m组操作。输出m次操作后每个点的权值。操作1: 连接x、y操作2: 使x及所有与x直接或间接相连的点+y思路: 带权并查集.操作2明显是对在一棵树上的所有点进行操作,但是暴力更新肯定寄。额外开一个数组记录某个点的改变量,操作2只对一棵树的根节点进行操作。最后每个点的权值即 a[find(i)] + d[i],树根的值 + i到树根的偏移量,偏移量可能是负的。操作1就正常维护并查集的合并即可。注意新合并的px到父节点py的距离是a[px] - a[py].时间复杂度:原创 2022-04-07 15:55:08 · 101 阅读 · 0 评论 -
2021届蓝桥杯省赛 D (抽风dailao tql)
题目题意: 给定长度为n的数组,和数k。求有多少种方案可以用两个数凑出k的倍数。凑出的意思是把两个数拼起来,12和3可以凑出123或者312。(k<=1e5,n<=1e5)思路: dp吧。cnt[i][j]: 表示放到一个长度为i的数前边,且余数为j的数的数量。之后动态维护即可。因为知道了这个数量,就可以由a[i] 和 取模后余数为k - a[i]的数们凑出k的倍数。但是还要倒着跑一遍,因为是这样只能是a[i]前边的数放到他前边,后边的没有考虑。时间复杂度: O(nlogn)代码原创 2022-04-06 22:13:12 · 165 阅读 · 0 评论 -
第十二届蓝桥杯B组省赛 填空题 C
C题意: 求由所有x在[0,19],y在[0,20]范围内两两不同的点形成的不同直线的数量。思路:把直线都扔到set即可。1.截距式,由k和b形成一个pair对。但是这里要注意,b不要用k代值求,不然有精度问题,要自己推式子。2. 一般式,Ax + By + C = 0.把a、b、c作为vector扔到set里,让他自己判断去.时间复杂度: O(xxlog(xx)), x = nm. n = 20,m = 21.代码:一般式#include<bits/stdc++.h>usi原创 2022-04-06 20:10:10 · 322 阅读 · 0 评论