2023第十四届蓝桥杯省赛C/C++大学A组题解
文章平均质量分 75
2023第十四届蓝桥杯省赛C/C++大学A组的十道题的题解,包括题意分析,部分解法和满分解法。
浴乎风乎
这个作者很懒,什么都没留下…
展开
-
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第1题题解:幸运数
从1遍历到9999,计算其数位与数位和,用二维数组a[sum][cnt]存储位数为cnt的数字且和为sum的数字的总数。根据乘法原理,对于一个数位和为2*sum的数,前一半数字有a[sum][cnt]种方案数,乘以后一半的方案数就是位数为2*cnt的总方案数。小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面 一半的数位之和,则这个数是他的幸运数字。根据幸运数的定义,前后一半的数位和是相同的,可以只枚举一半的数,并记录对应和的方案总数,最后将不同和的方案数相乘累计即可。填空题,输出答案即可。原创 2024-03-11 23:21:29 · 706 阅读 · 0 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第2题题解:有奖问答
小蓝正在参与一个现场问答的节目。活动中一共有 30 道题目,每题只有答对和答错两种情况,每答对一题得 10 分,答错一题分数归零。小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100 分,所以到达 100 分时小蓝会直接停止答题。已知小蓝最终实际获得了 70 分对应的奖项,请问小蓝所有可能的答题情况有多少种?填空题,输出答案即可。答案为8335366。原创 2024-03-13 00:24:28 · 980 阅读 · 0 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第3题题解:平方数
当a,b均为奇数时,(a+b)*(a-b)为偶数*偶数也就是4的倍数;当a,b均为偶数时,(a+b)*(a-b)为偶数*偶数也就是4的倍数;已知平方差公式c=a^2-b^2=(a+b)*(a-b),令a-b=1,则a+b=2*b+1,c=2*b-2,即奇数的通用表达形式,说明任意一个奇数都可以表示为平方差的形式。对于整数x,1到x中有x/2个奇数,x/4个4的倍数,共有x/2+x/4个能表示为平方差形式的数。令a-b=2,c=2*(2b+2)=4(b+1),说明任意一个4的倍数都可以表示为平方差的形式。原创 2024-03-13 21:09:21 · 538 阅读 · 0 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第4题题解:更小的数
对于从i到j的子串,如果第i位和第j位的数字不同的话可以直接判断出反转后的大小关系。如果这两位的数字相等,则该子串反转之后大小关系与i+1位到j-1位的子串相同。循环的顺序也很重要,本程序相当于依次判断前i位中所有子串的反转后大小关系,循环到第i位时前方i-1位所有子串的反转关系都已确定。本题最开始我使用string中的substr函数取子串,结果超时只过55%,说明substr函数还是影响效率的。注意,我们允许前导零的存在,即数字的最高位可以是 0 ,这是合法的。对于 40% 的评测用例,1。原创 2024-03-14 22:48:31 · 512 阅读 · 0 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第6题题解:买瓜
我在写这个题的时候将数组下标从1开始存,排序的时候sort第二个参数应该加n+1,因为这里写错了导致卡了很久,去读了官方这题的题解感觉很奇怪,将瓜分成两部分分别dfs,后一部分dfs时再二分搜索前一部分存的对应重量的刀数相加。可以使用dfs模拟这个从前往后选择的过程,dfs(id,sum,cut)中的三个参数分别表示当前选择的是第几个瓜,之前一共拿了多少重量的瓜,之前一共劈了多少刀。小蓝希望买到的瓜的重量的和恰好为。对于100%的评测用例,1≤n≤30,1≤Ai≤10^9,1 ≤m≤ 10^9。原创 2024-03-27 18:23:27 · 1168 阅读 · 1 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第7题题解:网络稳定性
本题难点有两个,一是判断出两点间的稳定性其实就是最大生成树中两点间的唯一通路,二是lca算法的书写,并且结合本题对稳定性的求法,在比赛的时候是看不到自己交的代码得了多少分的,如此复杂的代码也不好检查因此不好得分。为了做出本题我学习了一晚上lca的各种求法,不知不觉本文已经写了6200+字了,希望能够对你有帮助!原创 2024-03-29 17:00:28 · 1079 阅读 · 1 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第8题题解:异或和之和
也就是说,对于所有异或和的第k位乘以2^k的总和,等于所有第k位为1的异或和的个数乘以2^k。所有的异或和都是通过sum[l-1]异或sum[r]得到的,第k位为1的异或和的总数,就等于所有l和r中,sum[l-1]和sum[r]的第k位只有一个1的总对数。因为在这个式子中,前l-1项被异或了两次,而x^x=0,x^0=x,所以前l-1项均被异或两次后全都等于0,0对其他数字的异或不产生影响,sum[r]^sum[l-1]也就等于其中只异或了一次的l到r的异或和。对于 60% 的评测用例,原创 2024-03-30 23:40:41 · 661 阅读 · 1 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第9题题解:像素放置
那么对于每一个数字方格,当我填充完它的右下角方格也就是最后一个方格时,它的周围已经确定,之后的填充不会影响到他,这时判断它的数字是否被减到0,如果大于0,说明它周围的黑色少于它的数字,不成立需要回退。为了判断这两个条件,我找出了每个方格,其影响到的所有数字方格,当这个方格被涂成黑色时,就将其影响到的所有数字方格的数字都减一,如果有一个数字被减到小于0,说明这种情况不成立需要回退。对于一个方格,先假设它涂白色(数值为0),并继续向后枚举,如果这种情况不成立,则将它涂成黑色(数值为1)继续枚举。原创 2024-04-02 23:45:28 · 922 阅读 · 1 评论 -
2023第14届蓝桥杯大赛软件赛省赛C/C++大学A组第10题题解:翻转硬币
那么在计算0的个数的时候,如果i的质因数有奇数个就加上n/(i^2),否则减去n/(i^2),质因数的个数可以通过u(i)的正负判断。那么怎么求u(i)以及u(i)的和呢?乍一看g(i)好像就等于f(i),其实与f(i)相等的是i的所有不等于i的因数j的f(j)的和,再加上f(i)才等于g(i)。就是遍历到l时,从l到r的n/(i^2)的值都是一样的,这个范围的右界r=sqrt(n/(n/(i^2))),那么就只需要计算u(i)从l到r的前缀和差值乘以这个相同的n/(i^2),并将l指向r+1即可。原创 2024-04-06 02:10:32 · 1410 阅读 · 4 评论 -
2023第十四届蓝桥杯省赛C/C++大学A组题解
每道题的详细题解已经单发,在此进行汇总。点击链接可以查看详细题解。满分代码(填空题为不超时代码)满分代码(填空题为不超时代码)原创 2024-04-09 21:40:22 · 933 阅读 · 0 评论