早上7:30,我们来到了这与我们泉州第一中学有长达2个汉字的最长公共子序列的中山纪念中学。
上午
打比赛—-2025.08.12【提高B组】模拟赛
传送门
T1
题目描述
小A一直认为,如果在一个由N个整数组成的数列An中,存在Am
+ An + Ap = Ai(1 <= m, n, p < i)(m, n, p可以相同)
的话,Ai就是一个“好元素”。现在,小A有一个数列,他想知道
这个数列中有多少个“好元素”,请你帮帮他。
输入
第一行只有一个正整数N,意义如上。
第二行包含N个整数,表示数列An。
输出
输出一个整数,表示这个数列中“好元素”的个数。
赛时思路:
暴力+map,当 O(n^2\log n) 超时了
赛时代码:

标程思路:
手写 hash 即可
标程代码:


T2
题目描述
现在有一个长度为 m 的字符串 T 和一个长度为 n 的字符串S.
字符的下标从 0 开始。
对于字符串 S,我们有 k 个不同的区间。
你可以对字符串 S 进行若干次操作,每次操作你可以从k个区
间中选择一个区间,改变这个区间上字符的相对顺序。
比如字符串 S 为 "abcde",有 1 个区间 [0,2]。
那么你可以进行一次操作使得字符串S变成下列任意一个字符串
abcde
acbde
bacde
bcade
cabde
cbade
注意:我们可以多次使用同一个区间。
现在想要使得对 S 进行若干次操作之后,两个字符串的最长公
共子串尽量长。
输入
第一行为长度为 m 的字符串 T。
第二行为长度为 n 的字符串 S。
第三行包含一个整数 k,表示可以进行操作的区间个数。
接下来 k 行,每一行表示一个可以操作的区间。每一行包含两
个整数 l 和 r 表示闭区间 [l,r]。
输出
输出一个整数,表示经过若干操作之后,字符串 S 和 T 的最
长公共子串的长度最长可以多长。
赛时思路:
暴力+乱打
赛时代码:
没啥价值,就不放了
标程思路:
标程代码:
还没改,就不放了
T3
题目描述
现在给你两个长度为 n 的序列 a,b,其中 ∀1≤i≤n,1≤ai,
b i≤2n,且 1,2,..,2n 中每一个数在 a,b 中恰好出现一次.
其中 a 1=1,b 1=2。
现在你有一个 n×n 的网格,行列分别编号 1−n。对于所有
1≤i,j≤n且i+j>1的(i,j):
若a_i>b_j,则 (i,j) 与(i−1,j)有一条边;否则,(i,j)
与 (i,j−1) 有一条边。
容易发现这样构成一棵树。
现给定 q 次查询,每次查询给定 x,y,p,q,要求你求出
(x,y) 与 (p,q) 在这棵树上的距离。
输入
第一行一个数 n,表示序列的长度即网格的大小。
接下来两行,每行 n 个数,分别表示 a、b。
接下来一行一个数 q ,表示查询次数。
最后 q 行,每行四个数 x,y,p,q,要求你求出 (x,y) 与
(p,q) 在这棵树上的距离。
输出
输出 q 行,每行一个数,表示 (x,y) 与 (p,q) 在这棵树
上的距离。
赛时思路:
倍增求lca+暴力
赛时代码:


标程思路:
找不到
标程代码:
还没改,就不放了
T4
没时间了,就不放了