1. 程式人生 > >【牛客網】NOIP賽前集訓營-提高組(第二場)

【牛客網】NOIP賽前集訓營-提高組(第二場)

AA 中位數

題目描述

小N得到了一個非常神奇的序列 AA 。這個序列長度為 NN ,下標從 11 開始。 AA 的一個子區間對應一個序列,可以由數對 [l,r][l,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] ,定義 BB 的中位數如下:

  1. 先對 BB 排序。得到新的序列 CC
  2. 假如 kk 是奇數,那麼中位數為 C[k
    +12]C[\frac{k+1}{2}]
    。假如 kk 為偶數,中位數為C[k2]C[\frac{k}{2}]
    對於 AA 的所有的子區間,小N可以知道它們對應的中位數。現在小N想知道,所有長度 Len≥ Len 的子區間中,中位數最大可以是多少。

輸入描述

第一行輸入兩個數 N,LenN, Len
第二行輸入序列 AA ,第 ii 個數代表 A[i]A[i]

輸出描述

一行一個整數,代表所有長度 >=Len>=Len 的子區間中,最大的中位數。

樣例1

輸入

11 3
4864 8684 9511 8557 1122 1234 953 9819 101 1137 1759

輸出

8684

備註

資料範圍:
30%:n20030\%: n ≤ 200
60%:n200060\%: n ≤ 2000
另外有 20%20\%: 不超過 5050 個不同的數
100%1Lenn105,1a[i]109100\%:1 ≤ Len ≤ n ≤ 10^5, 1 ≤ a[i] ≤ 10^9

題解

實現

BB 數數字

題目描述

小N對於數字的大小一直都有兩種看法。第一種看法是,使用字典序的大小(也就是我們常用的判斷數字大小的方法,假如比較的數字長度不同,則在較短一個前面補齊前導 00 ,再比較字典序),比如 43<

355,10<1143<355,10<11 。第二種看法是,對於一個數字,定義他的權值為,也就是各個數位的乘積。
現在給定兩個區間, [L,R][L,R][L1,R1][L1,R1] 。小N現在想知道,有多少使用字典序判大小法在 [L,R][L,R] 之間的數字,滿足其第二種定義的權值也在 [L1,R1][L1,R1] 之間。
換句話說,對於一個數 xx ,定義 f(x)f(x)xx 的各個數位的乘積。對於 LxRL ≤ x ≤ R ,問有多少x滿足, L1f(x)R1L1 ≤ f(x) ≤ R1

輸入描述

第一行四個整數 L,R,L1,R1L,R,L1,R1

輸出描述

一行一個整數,代表小N想知道的數的數量。

樣例1

輸入

34 10000 24 57

輸出

777

備註

20%:L,R1000000020\%: L,R ≤ 10000000
40%:L,R310740\%: L,R ≤ 3*10^7
60%:L,R,L1,R110960\%: L,R,L1,R1 ≤ 10^9
20%L1,R11000另外有20\%:L1,R1 ≤ 1000
100%:0L,R,L1,R11018,LR,L1R1100\%: 0 ≤ L,R,L1,R1 ≤ 10^18, L ≤ R, L1 ≤ R1

題解

實現

CC 保護

題目描述

CC 國有 nn 個城市,城市間通過一個樹形結構形成一個連通圖。城市編號為 11nn ,其中 11 號城市為首都。國家有 mm 支軍隊,分別守衛一條路徑的城市。具體來說,對於軍隊 ii ,他守衛的城市區域可以由一對二元組 (xi,yi)(x_i,y_i) 代表。表示對於所有在 xix_iyiy_i 的最短路徑上的城市,軍隊 ii 都會守衛他們。
現在有 qq 個重要人物。對於一個重要人物 jj ,他要從他的轄區 vjv_j 出發,去到首都。出於某些原因,他希望找到一個離首都最近的,且在 vjv_j 到首都路徑上的城市 uju_j ,使得至少有 kjk_j 支軍隊,能夠全程保護他從 vjv_juju_j 上所經過的所有城市。換句話說,至少有 kik_i 支軍隊,滿足在樹上, xix_iyiy_i 的路徑能完全覆蓋掉 vjv_juju_j 的路徑。

輸入描述

第一行輸入兩個數 n,mn,m
接下來 n1n-1 行,每行兩個整數 u,vu,v ,表示存在一條從城市 uu 到城市 vv 的道路。
接下來 mm 行,每行兩個整數 x,yx,y 。描述一個軍隊的守衛區域。
接下來一行一個整數 qq
接下來 qq 行,每行兩個整數 vj,kjv_j,k_j

輸出描述

對於每次詢問,輸出從 vjv_juju_j 最少需要經過多少條邊。假如不存在這樣的 uju_j ,則輸出 00

樣例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<=30020\%: n,m,q <= 300
40%:n,m,q<=200040\%: n,m,q <= 2000
60%:n,m,q<=5000060\%: n,m,q <= 50000
100%:n,m,q<=200000100\%: n,m,q <= 200000

題解

實現