Kalzn
文章10
标签8
分类4
2021年-蓝桥c/c++ b组国赛回忆题解

2021年-蓝桥c/c++ b组国赛回忆题解

更新一下。成绩出来了,第18名。估计是H题没能拿全分,最后一个题又没有写出一个比较好的算法。

A

这个题有点坑人,因为他不是一个算法题,而是一个计算机知识题,不知道出题人出这个题的意图。。 刚拿到蒙了,但是回忆了一下,有次我手机限速,百度了一下1Mbps是多少。隐隐约约记得公式是1Mbps=0.125MB/s, 所以。。

B

利用素数筛打表,打到20210605,然后依次判定数字,以及每个数位是不是质数即可。注意这里不认为1是质数。

C

日期题,从2001.1.1枚举到2021.12.31,依次判断即可。

D

dp可解。为有个节点的二叉数的最小权值。则:

E

大小写转换不解释。

F

等差序列前缀和+二分,对于x,先二分出之前有多少轮。然后求和,然后加上最后不足的一轮的前缀和。

G

数位dp,令为考虑前i位二进制,已经包含j个1,且已经到达上限flag=1,或没有到达上限flag=0的个数。

H

有循环节,我认为一个长度位n的01串会在最多迭代n次后陷入一个长度不长于n的循环节中,但赛后与别人讨论,也有说这个串在最开始就会陷入一个循环节中。都没有证明。不过我写的常数很大。估计没法拿到全分。

I

线段树+区间合并。我们视左括号为+1,右括号为-1,线段树要维护。1、区间和。2、从区间左端点开始求和的区间前缀和最小值和最大值。当进行区间反转时,进行以下操作:1、打标记。2、区间和乘-1。3、区间前缀和最小值和最大值交换,并乘-1。当进行查询时,从L节点开始,二分一个最长的,前缀和全是正数的区间。一般情况下,这个区间的右段端即位所求,因为如果这个区间是最长的,那么这个区间右段端的下一个位置的前缀和一定为负,则到这个右端点的前缀和一定是0。但是有例外,就是这个区间到序列的结束,如果没有前缀和==0的,即位不可能,否则再寻找区间的最后一个0。可以二分寻找。由于是二分套线段树,所以复杂度是m是2e5,应该可以过吧。。

J

没时间了,因为要检查,直接上了,但是出考场一讨论,傻b了,因为所以第三个数直接可以出来的,于是少了10%的样例。。。

本文作者:Kalzn
本文链接:http://kalzncc.github.io/2022/11/20/lanqiao-2021-recall/
版权声明:除文章中特别注明外,本站所有文章采用 CC BY 3.0 CN 协议进行许可
即在署明文章作者及来源的情况下,您可以将本文用于包括商业目在内的任何用途。
除此之外,本文不做正确性担保,本人不对产生的问题负责。
×