第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学C组)


试题 A: 求和

本题总分: 5 5 5


【问题描述】

  求 1 1 1 (含)至 20230408 20230408 20230408 (含)中每个数的和。

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


204634714038436


自然数列求和, 1 + 2 + ⋯ + n = n ( n + 1 ) 2 1+2+\cdots+n=\cfrac {n(n+1)}2 1+2++n=2n(n+1)

#include <stdio.h>

int main() {
   
    printf("%lld", 20230408 * (20230408 + 1ll) / 2);
}

或者迭代答案。

#include <stdio.h>

int main() {
   
    long long ans = 0;
    for (int i = 1; i <= 20230408; ++i)
        ans += i;
    printf("%lld", ans);
}

试题 B: 工作时长

本题总分: 5 5 5


【问题描述】

  小蓝手里有一份 2022 年度自己的上班打卡记录文件,文件包含若干条打卡记录,每条记录的格式均为 “ y y y y \rm yyyy yyyy- M M \rm MM MM- d d   H H : m m : s s \rm dd\ HH:mm:ss dd HH:mm:ss”,即按照年 -月 -日时:分: 秒的形式记录着一个时间点 (采用 24 24 24 小时进制)。由于某些原因,这份文件中的时间记录并不是按照打卡的时间顺序记录的,而是被打乱了。但我们保证小蓝每次上班和下班时都会正常打卡,而且正好打卡一次,其它时候不会打卡。每一对相邻的上 -下班打卡之间的时间就是小蓝本次的工作时长,例如文件内容如下的话:

2022 2022 2022- 01 01 01- 01   12 : 00 : 05 01\ 12:00:05 01 12:00:05
2022 2022 2022- 01 01 01- 02   00 : 20 : 05 02\ 00:20:05 02 00:20:05
2022 2022 2022- 01 01 01- 01   07 : 58 : 02 01\ 07:58:02 01 07:58:02
2022 2022 2022- 01 01 01- 01   16 : 01 : 35 01\ 16:01:35 01 16:01:35

表示文件中共包含了两段上下班记录, 1 ) 2022 1)2022 12022- 01 01 01- 01   07 : 58 : 02 ∼ 2022 01\ 07:58:02 ∼ 2022 01 07:58:022022- 01 01 01- 01   12 : 00 : 05 01\ 12:00:05 01 12:00:05,工作时长为 14523 14523 14523 秒; 2 ) 2022 2)2022 22022- 01 01 01- 01   16 : 01 : 35 ∼ 2022 01\ 16:01:35 ∼ 2022 01 16:01:352022- 01 01 01- 02   00 : 20 : 05 02\ 00:20:05 02 00:20:05 工作时长为 29910 29910 29910 秒;工作时长一共是 14523 + 29910 = 44433 14523+29910=44433 14523+29910=44433 秒。现在小蓝想知道在 2022 2022 2022 年度自己的工作时长一共是多少秒?

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


unknow


没数据,写个差不多的程序意思一下。

#include <stdio.h>
#include <time.h>
#include <queue>

int main() {
   
    freopen("lock-in.all.txt", "r", stdin);
    std::priority_queue<clock_t> pq;
    for (tm tm; ~scanf("%d-%d-%d %d:%d:%d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);)
        tm.tm_year -= 1900, --tm.tm_mon, pq.push(mktime(&tm));
    long long cnt = 0;
    for (int sign = 1; pq.size(); sign = -sign)
        cnt += sign * pq.top(), pq.pop();
    printf("%lld", cnt);
}

试题 C: 三国游

时间限制: 1.0 s 1.0\mathrm s 1.0s 内存限制: 256.0 M B 256.0\mathrm{MB} 256.0MB 本题总分: 10 10 10


【问题描述】

  小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X , Y , Z X, Y, Z X,Y,Z (一开始可以认为都为 0 0 0 )。游戏有 n n n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i i i 个事件发生时会分别让 X , Y , Z X, Y, Z X,Y,Z 增加 A i , B i , C i A_i, B_i,C_i Ai,Bi,Ci
  当游戏结束时 (所有事件的发生与否已经确定),如果 X , Y , Z X, Y, Z X,Y,Z 的其中一个大于另外两个之和,我们认为其获胜。例如,当 X > Y + Z X > Y + Z X>Y+Z 时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?
  如果不存在任何能让某国获胜的情况,请输出 − 1 −1 1

【输入格式】

  输入的第一行包含一个整数 n n n
  第二行包含 n n n 个整数表示 A i A_i Ai,相邻整数之间使用一个空格分隔。
  第三行包含 n n n 个整数表示 B i B_i Bi,相邻整数之间使用一个空格分隔。
  第四行包含 n n n 个整数表示 C i C_i Ci,相邻整数之间使用一个空格分隔。

【输出格式】

  输出一行包含一个整数表示答案。

【样例输入】

3
1 2 2
2 3 2
1 0 7

【样例输出】

2

【样例说明】

  发生两个事件时,有两种不同的情况会出现获胜方。
  发生 1 , 2 1, 2 1,2 事件时蜀国获胜。
  发生 1 , 3 1, 3 1,3 事件时吴国获胜。

【评测用例规模与约定】

  对于 40 % 40\% 40% 的评测用例, n ≤ 500 n ≤ 500 n500
  对于 70 % 70\% 70% 的评测用例, n ≤ 5000 n ≤ 5000 n5000
  对于所有评测用例, 1 ≤ n ≤ 1 0 5 , 1 ≤ A i , B i , C i ≤ 1 0 9 1 ≤ n ≤ 10^5,1 ≤ A_i, B_i,C_i ≤ 10^9 1n1051Ai,Bi,Ci109


贪心


同时考虑三个国家是相当困难的,于是考虑分别求出魏蜀吴分别获胜的话最大事件数,最优答案就是这若干个数中的最大值。
以魏举例,记第 i i i 个事件对魏获胜的贡献为 x i − y i − z i x_i -y_i -z_i xiyizi,按贡献降序重排事件,找到一个 k k k,满足 ∑ i = 1 k x i > ∑ i = 1 k ( y i + z i ) \sum_{i=1}^kx_i >\sum_{i=1}^k(y_i + z_i) i=1kxi>i=1k(yi+zi) k k k 尽可能大,若 k < n k < n k<n,易知 ∑ i = 1 k + 1 x i ≤ ∑ i = 1 k + 1 ( y i + z i ) \sum_{i=1}^{k+1}x_i \leq\sum_{i=1}^{k+1}(y_i + z_i) i=1k+1x

2023年的第十四届蓝桥杯 C/C++ 大学大赛 A 是一个非常重要且具有挑战性的比。作为蓝桥杯系列事的一部分,这个比吸引了全国各地的大学生参与,旨在促进青年学生计算机编程技术的提高,培养他们的创新能力和团队协作精神。 参者需要通过线上报名,在规定的时间内上传自己的比作品。比设置了一系列难度逐渐增加的编程题目,要求选手运用C/C++语言进行编写和实现。这些题目可能涉及算法设计、数据结构、编程基础等方面的知识,考察参者的编码能力、解决问题的能力以及在压力下的应变能力。 在比中,选手不仅需要具备扎实的编程技术,还需要在有限的时间内迅速分析问题、设计解决方案,并通过编程实现。因此,参者需要具备良好的逻辑思维能力、数学基础和编程实践经验。 在中取得好成绩的选手将有机会晋级到全国,进一步与全国各地的顶尖选手一较高下,争夺更好的名次和更多的奖品。 参加蓝桥杯 C/C++ 大学大赛不仅是一次锻炼和展示自己编程能力的机会,还能结识更多志同道合的同学和业界精英,获得丰厚的奖金和荣誉。同时,参经历对于大学生未来的学习和职业发展也具有积极的影响。 总之,2023年第十四届蓝桥杯 C/C++ 大学大赛 A 是一个具有挑战性的比,参者需要具备扎实的编程技术和解决问题的能力。通过参与比,学生可以提升自己的编程能力,拓宽视野,展示个人才华,并为未来的学习和就业打下坚实的基础。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值