A A A 中位数
链接:https://www.nowcoder.com/acm/contest/172/A
来源:牛客网
题目描述
小N得到了一个非常神奇的序列 A A A 。这个序列长度为 N N N ,下标从 1 1 1 开始。 A A A 的一个子区间对应一个序列,可以由数对 [ l , r ] [l,r] [l,r] 表示,代表 A [ l ] , A [ l + 1 ] , . . . , A [ r ] A[l], A[l + 1], ..., A[r] A[l],A[l+1],...,A[r] 这段数。对于一个序列 B [ 1 ] , B [ 2 ] , . . . , B [ k ] B[1], B[2], ..., B[k] B[1],B[2],...,B[k] ,定义 B B B 的中位数如下:
- 先对 B B B 排序。得到新的序列 C C C 。
- 假如
k
k
k 是奇数,那么中位数为
C
[
k
+
1
2
]
C[\frac{k+1}{2}]
C[2k+1] 。假如
k
k
k 为偶数,中位数为
C
[
k
2
]
C[\frac{k}{2}]
C[2k] 。
对于 A A A 的所有的子区间,小N可以知道它们对应的中位数。现在小N想知道,所有长度 ≥ L e n ≥ Len ≥Len 的子区间中,中位数最大可以是多少。
输入描述
第一行输入两个数
N
,
L
e
n
N, Len
N,Len 。
第二行输入序列
A
A
A ,第
i
i
i 个数代表
A
[
i
]
A[i]
A[i] 。
输出描述
一行一个整数,代表所有长度 > = L e n >=Len >=Len 的子区间中,最大的中位数。
样例1
输入
11 3
4864 8684 9511 8557 1122 1234 953 9819 101 1137 1759
输出
8684
备注
数据范围:
30
%
:
n
≤
200
30\%: n ≤ 200
30%:n≤200
60
%
:
n
≤
2000
60\%: n ≤ 2000
60%:n≤2000
另外有
20
%
:
20\%:
20%: 不超过
50
50
50 个不同的数
100
%
:
1
≤
L
e
n
≤
n
≤
1
0
5
,
1
≤
a
[
i
]
≤
1
0
9
100\%:1 ≤ Len ≤ n ≤ 10^5, 1 ≤ a[i] ≤ 10^9
100%:1≤Len≤n≤105,1≤a[i]≤109
题解
实现
B B B 数数字
链接:https://www.nowcoder.com/acm/contest/172/B
来源:牛客网
题目描述
小N对于数字的大小一直都有两种看法。第一种看法是,使用字典序的大小(也就是我们常用的判断数字大小的方法,假如比较的数字长度不同,则在较短一个前面补齐前导
0
0
0 ,再比较字典序),比如
43
<
355
,
10
<
11
43<355,10<11
43<355,10<11 。第二种看法是,对于一个数字,定义他的权值为,也就是各个数位的乘积。
现在给定两个区间,
[
L
,
R
]
[L,R]
[L,R] 与
[
L
1
,
R
1
]
[L1,R1]
[L1,R1] 。小N现在想知道,有多少使用字典序判大小法在
[
L
,
R
]
[L,R]
[L,R] 之间的数字,满足其第二种定义的权值也在
[
L
1
,
R
1
]
[L1,R1]
[L1,R1] 之间。
换句话说,对于一个数
x
x
x ,定义
f
(
x
)
f(x)
f(x) 为
x
x
x 的各个数位的乘积。对于
L
≤
x
≤
R
L ≤ x ≤ R
L≤x≤R ,问有多少x满足,
L
1
≤
f
(
x
)
≤
R
1
L1 ≤ f(x) ≤ R1
L1≤f(x)≤R1 。
输入描述
第一行四个整数 L , R , L 1 , R 1 L,R,L1,R1 L,R,L1,R1 。
输出描述
一行一个整数,代表小N想知道的数的数量。
样例1
输入
34 10000 24 57
输出
777
备注
20
%
:
L
,
R
≤
10000000
20\%: L,R ≤ 10000000
20%:L,R≤10000000
40
%
:
L
,
R
≤
3
∗
1
0
7
40\%: L,R ≤ 3*10^7
40%:L,R≤3∗107
60
%
:
L
,
R
,
L
1
,
R
1
≤
1
0
9
60\%: L,R,L1,R1 ≤ 10^9
60%:L,R,L1,R1≤109
另
外
有
20
%
:
L
1
,
R
1
≤
1000
另外有20\%:L1,R1 ≤ 1000
另外有20%:L1,R1≤1000
100
%
:
0
≤
L
,
R
,
L
1
,
R
1
≤
1
0
1
8
,
L
≤
R
,
L
1
≤
R
1
100\%: 0 ≤ L,R,L1,R1 ≤ 10^18, L ≤ R, L1 ≤ R1
100%:0≤L,R,L1,R1≤1018,L≤R,L1≤R1
题解
实现
C C C 保护
链接:https://www.nowcoder.com/acm/contest/172/C
来源:牛客网
题目描述
C
C
C 国有
n
n
n 个城市,城市间通过一个树形结构形成一个连通图。城市编号为
1
1
1 到
n
n
n ,其中
1
1
1 号城市为首都。国家有
m
m
m 支军队,分别守卫一条路径的城市。具体来说,对于军队
i
i
i ,他守卫的城市区域可以由一对二元组
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 代表。表示对于所有在
x
i
x_i
xi 到
y
i
y_i
yi 的最短路径上的城市,军队
i
i
i 都会守卫他们。
现在有
q
q
q 个重要人物。对于一个重要人物
j
j
j ,他要从他的辖区
v
j
v_j
vj 出发,去到首都。出于某些原因,他希望找到一个离首都最近的,且在
v
j
v_j
vj 到首都路径上的城市
u
j
u_j
uj ,使得至少有
k
j
k_j
kj 支军队,能够全程保护他从
v
j
v_j
vj 到
u
j
u_j
uj 上所经过的所有城市。换句话说,至少有
k
i
k_i
ki 支军队,满足在树上,
x
i
x_i
xi 到
y
i
y_i
yi 的路径能完全覆盖掉
v
j
v_j
vj 到
u
j
u_j
uj 的路径。
输入描述
第一行输入两个数
n
,
m
n,m
n,m 。
接下来
n
−
1
n-1
n−1 行,每行两个整数
u
,
v
u,v
u,v ,表示存在一条从城市
u
u
u 到城市
v
v
v 的道路。
接下来
m
m
m 行,每行两个整数
x
,
y
x,y
x,y 。描述一个军队的守卫区域。
接下来一行一个整数
q
q
q 。
接下来
q
q
q 行,每行两个整数
v
j
,
k
j
v_j,k_j
vj,kj 。
输出描述
对于每次询问,输出从 v j v_j vj 到 u j u_j uj 最少需要经过多少条边。假如不存在这样的 u j u_j uj ,则输出 0 0 0 。
样例1
输入
8 8
7 1
1 3
3 4
4 6
6 2
4 5
7 8
7 2
7 1
7 1
7 5
1 1
1 3
1 6
5 1
8
5 1
2 1
2 1
4 2
3 2
4 2
1 1
4 1
输出
3
4
4
2
1
2
0
2
备注
20
%
:
n
,
m
,
q
<
=
300
20\%: n,m,q <= 300
20%:n,m,q<=300
40
%
:
n
,
m
,
q
<
=
2000
40\%: n,m,q <= 2000
40%:n,m,q<=2000
60
%
:
n
,
m
,
q
<
=
50000
60\%: n,m,q <= 50000
60%:n,m,q<=50000
100
%
:
n
,
m
,
q
<
=
200000
100\%: n,m,q <= 200000
100%:n,m,q<=200000
题解
实现