abc437

题面

A - 英尺

分值:100 分

题目描述

1 英尺等于 12 英寸。
请问 A 英尺 B 英寸换算成英寸是多少英寸?

约束条件

  1. $1 \leq A \leq 8$
  2. $0 \leq B \leq 11$
  3. 所有输入值均为整数

输入格式

输入通过标准输入按以下格式给出:

A B

输出格式

将答案输出在一行中。省略单位(英寸)进行输出。

输入样例 1

6 7

输出样例 1

79

6 英尺 7 英寸换算成英寸为 $6 \times 12 + 7 = 79$ 英寸。

输入样例 2

4 11

输出样例 2

59

4 英尺 11 英寸换算成英寸为 $4 \times 12 + 11 = 59$ 英寸。

输入样例 3

8 0

输出样例 3

96

8 英尺 0 英寸换算成英寸为 $8 \times 12 + 0 = 96$ 英寸。


B - 幸运抽奖

题目描述

有一个 $H$ 行 $W$ 列的网格。每个格子中写着一个整数,所有整数互不相同。从上到下第 $i$ 行、从左到右第 $j$ 列的格子中写有整数 $A_{i,j}$。

现在,主持人喊出了 $N$ 个互不相同的整数 $B_1, \dots, B_N$。

对于每一行,计算出主持人喊出的整数中,有多少个出现在该行中。这些数量的最大值是多少?

约束条件

$1 \leq H \leq 3$
$1 \leq W \leq 5$
$1 \leq N \leq 90$
$1 \leq A_{i,j} \leq 90$
$A_{i,j}$ 互不相同
$1 \leq B_i \leq 90$
$B_i$ 互不相同
所有输入值均为整数

输入格式

输入通过标准输入给出,格式如下:

H W N
A_{1,1} ... A_{1,W}
...
A_{H,1} ... A_{H,W}
B_1
...
B_N

输出格式

输出一行,包含答案。

输入样例 1

3 4 5
12 3 5 7
6 10 11 9
1 2 4 8
2
4
9
6
11

输出样例 1

3

输入样例 2

3 5 2
81 63 31 16 15
30 3 6 54 24
26 41 48 64 66
44
79

输出样例 2

0

输入样例 3

3 5 12
78 19 70 58 83
12 30 80 20 27
48 71 8 43 82
82
30
43
8
80
70
20
78
12
71
19
48

输出样例 3

5

C - 驯鹿与雪橇 2

题目描述

有 $N$ 头驯鹿和 1 架雪橇。第 $i$ 头驯鹿的体重为 $W_i$,力量为 $P_i$。

对于每头驯鹿,需要选择是让它“拉雪橇”还是“乘坐雪橇”。
但是,拉雪橇的驯鹿的力量总和必须大于等于乘坐雪橇的驯鹿的体重总和。
最多可以让多少头驯鹿乘坐雪橇?

给定 $T$ 个测试用例。请分别回答每个用例。

约束条件

$1 \leq T \leq 10^5$
$1 \leq N \leq 3 \times 10^5$
$1 \leq W_i, P_i \leq 10^9$
所有输入值均为整数。
单个输入文件中所有 $N$ 的总和不超过 $3 \times 10^5$。

输入格式

输入通过标准输入给出,格式如下:

T
case_1
case_2
⋮
case_T

每个测试用例的格式如下:

N
W_1 P_1
W_2 P_2
⋮
W_N P_N

输出格式

输出 $T$ 行。第 $i$ 行输出第 $i$ 个测试用例的答案。

输入样例 1

3
3
3 1
4 1
5 9
5
1000000000 1
1000000000 1
1000000000 1
1000000000 1
1000000000 1
10
133180711 458704923
531424946 225863856
141986070 637075158
500770732 289806469
502866767 408857335
559714289 569084545
287444582 992432993
559747907 753133304
432846188 949871298
727072164 756020367

输出样例 1

2
0
6

D - 差之和

题目描述

给定一个长度为 $N$ 的正整数序列 $A = (A_1, A_2, \dots, A_N)$ 和一个长度为 $M$ 的正整数序列 $B = (B_1, B_2, \dots, B_M)$。

求 $\displaystyle \sum_{i=1}^{N} \sum_{j=1}^{M} |A_i - B_j|$ 的值,并对 $998244353$ 取模。

约束条件

$1 \leq N, M \leq 3 \times 10^5$
$1 \leq A_i, B_j < 998244353$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N M
A_1 A_2 ... A_N
B_1 B_2 ... B_M

输出格式

输出一行,包含答案。

输入样例 1

4 2
1 6 9 2
3 1

输出样例 1

26

输入样例 2

8 8
185991676 311812083 311812083 84357963 185991676 185991676 724020528 369175631
455049197 387671868 4361724 724020528 724020528 455049197 455049197 724020528

输出样例 2

529117255

E - 对数组排序

题目描述

有 $N+1$ 个序列 $A_0, A_1, \dots, A_N$。$A_i$ 定义如下:
. $A_0$ 是一个空序列。
. $A_i$ $(1 \le i \le N)$ 是在序列 $A_{x_i}$ $(0 \le x_i < i)$ 的末尾添加整数 $y_i$ 后得到的序列。

找出满足以下条件的排列 $P = (P_1, P_2, \dots, P_N)$(即 $(1, 2, \dots, N)$ 的一个排列):
. 对于 $i = 1, 2, \dots, N-1$,满足以下条件之一:
. $A_{P_i}$ 在字典序上小于 $A_{P_{i+1}}$。
. $A_{P_i} = A_{P_{i+1}}$ 且 $P_i < P_{i+1}$。
换句话说,当将 $A_1, A_2, \dots, A_N$ 按字典序排列(当有多个相同的序列时,索引较小的在前)时,$P$ 就是该排列中出现的索引序列。

约束条件

$1 \leq N \leq 3 \times 10^5$
$0 \leq x_i < i$
$1 \leq y_i \leq 10^9$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N
x_1 y_1
x_2 y_2
⋮
x_N y_N

输出格式

在一行中输出 $P_1, P_2, \dots, P_N$,用空格分隔。

输入样例 1

4
0 2
0 1
2 2
0 1

输出样例 1

2 4 3 1

解释:
$A_1 = (2), A_2 = (1), A_3 = (1, 2), A_4 = (1)$,所以 $P = (2, 4, 3, 1)$。

输入样例 2

5
0 1
0 1
0 1
0 1
0 1

输出样例 2

1 2 3 4 5

输入样例 3

10
0 305186313
1 915059758
0 105282054
1 696409999
3 185928366
3 573289179
6 254538849
3 105282054
5 696409999
8 168629803

输出样例 3

3 8 10 5 9 6 7 1 4 2

F - 曼哈顿圣诞树 2

题目描述

在二维平面上有 $N$ 棵圣诞树。第 $i$ 棵($1 \leq i \leq N$)圣诞树位于坐标 $(X_i, Y_i)$。

给你 $Q$ 个查询。请按顺序处理这些查询。每个查询是以下两种类型之一:

类型 1:以 1 i x y 的形式给出。将第 $i$ 棵圣诞树的坐标改为 $(x, y)$。
类型 2:以 2 L R x y 的形式给出。输出从坐标 $(x, y)$ 到第 $L, L+1, \dots, R$ 棵圣诞树中最远的圣诞树的曼哈顿距离。

这里,坐标 $(x_1, y_1)$ 和 $(x_2, y_2)$ 之间的曼哈顿距离定义为 $|x_1 - x_2| + |y_1 - y_2|$。

约束条件

$1 \leq N, Q \leq 2 \times 10^5$
$-10^9 \leq X_i, Y_i \leq 10^9$
$1 \leq i \leq N$
$1 \leq L \leq R \leq N$
$-10^9 \leq x, y \leq 10^9$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N Q
X_1 Y_1
X_2 Y_2
⋮
X_N Y_N
query_1
query_2
⋮
query_Q

其中,第 $i$ 个查询 query_i 以下列两种格式之一给出:

1 i x y
2 L R x y

输出格式

根据问题描述中的说明,输出查询的答案,每个答案占一行。

输入样例 1

3 4
-1 -1
1 2
-2 1
2 1 2 0 0
2 1 3 -1 2
1 1 0 1
2 1 3 -1 2

输出样例 1

3
3
2

解释:
最初,第 1、2、3 棵圣诞树分别位于坐标 $(-1, -1)$、$(1, 2)$、$(-2, 1)$。
处理每个查询:

  1. 从第 1、2 棵圣诞树到坐标 $(0, 0)$ 的曼哈顿距离分别为 $2$ 和 $3$。因此输出 $3$,即 $2, 3$ 中的最大值。
  2. 从第 1、2、3 棵圣诞树到坐标 $(-1, 2)$ 的曼哈顿距离分别为 $3$、$2$、$2$。因此输出 $3$,即 $3, 2, 2$ 中的最大值。
  3. 将第 1 棵圣诞树的坐标改为 $(0, 1)$。第 1、2、3 棵圣诞树的坐标变为 $(0, 1)$、$(1, 2)$、$(-2, 1)$。
  4. 从第 1、2、3 棵圣诞树到坐标 $(-1, 2)$ 的曼哈顿距离分别为 $2$、$2$、$2$。因此输出 $2$,即 $2, 2, 2$ 中的最大值。

输入样例 2

5 7
-9 5
-2 -9
10 -6
9 8
2 9
1 3 -9 -6
2 3 4 2 7
1 4 -2 -10
2 1 2 0 -10
2 3 4 10 -9
2 3 4 8 7
2 5 5 0 2

输出样例 2

24
24
22
30
9

G - 彩色圣诞树

题目描述

今年的圣诞节季节已经结束,终于到了新年的时刻。高桥正在忙着进行大扫除,要收起圣诞树。

有一棵用三种颜色(红色、蓝色、绿色)装饰的灯泡装饰的圣诞树。圣诞树上有 $N$ 个灯泡,它们由 $N-1$ 条丝带连接。将灯泡视为顶点,丝带视为边,这个图是一棵树。

灯泡编号从 $1$ 到 $N$,丝带编号从 $1$ 到 $N-1$。丝带 $i$ 连接灯泡 $u_i$ 和 $v_i$。灯泡 $i$ 初始亮着红色(如果 $c_i$ 是 R),绿色(如果 $c_i$ 是 G),或蓝色(如果 $c_i$ 是 B)。

高桥正在考虑执行以下操作 $N-1$ 次来移除所有丝带:

  1. 从尚未移除的丝带中选择一条,其两端的灯泡颜色不同,然后移除该丝带。
  2. 设 $u$ 和 $v$ 是被移除丝带两端的灯泡。对于每个灯泡 $u$ 和 $v$,根据以下规则改变它们亮的颜色:

    • 如果之前亮红色,则改为亮绿色。
    • 如果之前亮绿色,则改为亮蓝色。
    • 如果之前亮蓝色,则改为亮红色。

确定高桥是否可以通过重复此操作来移除所有丝带。如果可能,输出一种方法。

给定 $T$ 个测试用例。请解决每个测试用例。

约束条件

$1 \leq T \leq 20000$
$2 \leq N \leq 2000$
$c_i$ 是 RGB
$1 \leq u_i, v_i \leq N$
将灯泡视为顶点,丝带视为边,给定的图是一棵树。
$T, N, u_i, v_i$ 是整数。
单个输入文件中所有 $N^2$ 的总和不超过 $2000^2$。

输入格式

输入通过标准输入给出,格式如下:

T
case_1
case_2
⋮
case_T

每个测试用例的格式如下:

N
c_1 c_2 ... c_N
u_1 v_1
u_2 v_2
⋮
u_{N-1} v_{N-1}

输出格式

按顺序输出 case_1, case_2, ..., case_T 的答案,格式如下:

如果无法移除所有丝带,输出 No

如果可能,设 $e_i$ 为第 $i$ 次操作移除的丝带编号,输出:

Yes
e_1 e_2 ... e_{N-1}

其中 $(e_1, e_2, \dots, e_{N-1})$ 必须是 $(1, 2, \dots, N-1)$ 的一个排列。

如果有多个解,任意一个都将被视为正确。

输入样例 1

3
4
GBBR
1 2
1 3
1 4
3
RRR
1 2
2 3
5
RGBRG
1 2
2 3
3 4
3 5

输出样例 1

Yes
1 3 2
No
Yes
1 4 2 3

解释:
对于第一个测试用例,例如,可以通过以下操作移除所有丝带:

  1. 初始时,灯泡颜色依次(从灯泡 1 开始)为绿色、蓝色、蓝色、红色。
  2. 移除丝带 1。移除后,灯泡颜色依次为蓝色、红色、蓝色、红色。
  3. 移除丝带 3。移除后,灯泡颜色依次为红色、红色、蓝色、绿色。
  4. 移除丝带 2。移除后,灯泡颜色依次为绿色、红色、红色、绿色。
    满足条件的 $(e_1, e_2, e_3)$ 是 $(1, 3, 2)$ 和 $(2, 3, 1)$,任意一个都将被视为正确。

对于第二个测试用例,无论你如何操作,都无法移除所有丝带。

反思

A

本题是一道签到题
根据题意可知:

$$ \text{总英寸数} = A \times 12 + B $$

由于题目的数据范围过小,可直接使用顺序结构求解
以下是我赛场时的代码

#include <bits/stdc++.h>
using namespace std;
int a,b;
int main(){
    cin>>a>>b;
    cout<<a*12+b;
}

B

题目的意思就是:题目要求计算每一行中主持人喊出的整数出现的个数,并输出这些个数的最大值
由于数据范围过小,可直接使用数组存储,不需要使用任何数据优化方案
思路:

  1. 读入 $H,W,N$
  2. 用二维数组 $A$ 存储矩阵
  3. 用一个大小为 $91$ (∵ $1 \leq B_i \leq 90$)的布尔数组 isB 标记 $B$ 中的数
  4. 对每一行遍历,统计这一行中有多少个数在 isB 中被标记为 true
  5. 记录这些统计数的最大值并输出
    以下是我赛时的代码:
#include <bits/stdc++.h>
using namespace std;
int H,W,N,i,j,b,cnt,ma,a[5][6],fl[91];
int main(){
    cin>>H>>W>>N;
    for(i=0;i<H;i++) for(j=0;j<W;j++) cin>>a[i][j];
    for(i=0;i<N;i++){
        cin>>b;fl[b]=1;
    }
    for(i=0;i<H;i++){
        cnt=0;
        for(j=0;j<W;j++) if(fl[a[i][j]]) cnt++;
        if(cnt>ma) ma=cnt;
    }
    cout<<ma;
}

根据题目思路就可以得出代码,非常 Easy

C

这题我在赛时并没有得出正确程序
赛后,我邀请 deepseek 完成此题,我将对 deepseek 的内容进行阐述

算法:贪心
题目阐述:有 (N) 头驯鹿,每头驯鹿有体重 (W_i) 和力量 (P_i)。选择一部分驯鹿“乘坐雪橇”,剩下的“拉雪橇”。要求“拉雪橇”的驯鹿的力量总和 ≥ “乘坐雪橇”的驯鹿的体重总和。问最多可以让多少头驯鹿乘坐雪橇
问题转化为:在不超过总力量 (S) 的前提下,最多能选择多少头驯鹿,使得它们的 (W_i + P_i) 之和不超过 (S)。这是一个典型的贪心问题:按 (W_i + P_i) 从小到大选择,直到总和超过 (S)
对每个测试用例:

  1. 读入 (N) 和每头驯鹿的 (W_i, P_i)
  2. 计算总力量 (S = \sum P_i)
  3. 计算每头驯鹿的 (a_i = W_i + P_i),并排序
  4. 从小到大累加 (a_i),直到总和超过 (S),累加的个数即为答案
    时间复杂度:$O(N \operatorname{log} N)$

这是 deepseek 给出的代码:

#include<iostream>
#include<algorithm>
using namespace std;
int T,N,i,cnt;
long long totalP,sum,W,P;
long long a[100005];

int main(){
    cin>>T;
    while(T--){
        cin>>N;
        totalP=0;
        for(i=0;i<N;i++){
            cin>>W>>P;
            a[i]=W+P;
            totalP+=P;
        }
        sort(a,a+N);
        sum=0;
        cnt=0;
        for(i=0;i<N;i++){
            if(sum+a[i]<=totalP){
                sum+=a[i];
                cnt++;
            }else{
                break;
            }
        }
        cout<<cnt<<endl;
    }
    return 0;
}
最后修改:2025 年 12 月 21 日
如果觉得我的文章对你有用,请随意赞赏