牛客練習賽75 D 減數遊戲

2021-10-13 19:56:33 字數 1398 閱讀 7765

題目鏈結

dst

\text

dst 喜歡對序列操作。他的好胖友 tanao

\text

tanao

送給他乙個序列a1.

..an

a_1...a_n

a1​...

an​。dst

\text

dst 進行 n−1

n-\text 1

n−1 次操作,每次操作刪去序列中任意兩個數 a,b

\mathop a ,b

a,b,並往序列中加入乙個數 a×b

+k

a\times b + k

a×b+

k。設最後剩下的數為 p

\mathop p

p,tanao

\text

tanao

想知道 p

\mathop p

p 可能的最大值。

輸入共 2

\text 2

2 行。

第一行包含 2

\text 2

2 個正整數 n,k

(1≤n

≤105

)n,k(1\le n\le 10^5)

n,k(1≤

n≤10

5)。第二行包含 n

\mathop n

n 個正整數,其中第 i

\mathop i

i 個數表示 ai(

1≤ai

,k≤1

09

)a_i(1\le a_i,k \le 10^9)

ai​(1≤

ai​,

k≤10

9)。輸出共一行,包含乙個非負整數,表示答案。由於結果可能較大,你只需要輸出結果對 109

+7=1

,000

,000

,007

10^9+7=1,000,000,007

109+7=

1,00

0,00

0,00

7 取模的結果。

3 2

1 1 1

5
簡單堆操作,每次取最小的兩個數操作即可,注意用 c 的話要控制好數的大小,我用的 py ,ac**如下:

import heapq

n,k,

*l=map

(int

,open(0

).read(

).split())

heapq.heapify(l)

while

len(l)

>1:

print

(l[0]%

1000000007

)

牛客練習賽24 D

名字挺有意思的,排插樹,雖然這是個圖。算dijkstra的模版題,求最短路裡面最長的那條,因為到講台的距離總是取決於最短的那條路,但是又要求離講台最遠,那麼我們通過dijkstra計算出起始點到所有點的最短路然後遍歷找最大值就好。如下 include using namespace std type...

牛客練習賽64 D

容斥原理經典題 第i ii個物品不能放在a ia i ai 箱子裡,求每個箱子有乙個物品的方案數 經典題目 之前做了一道題,需要crt crtcr t合併 此題 也是要考慮到容斥,那題處理方式是利用dpdp dp,因為有個類似上公升子串行的遞推關係,dp i dp i dp i 表示第乙個不合法的情...

牛客練習賽39D

首先操作2用並查集就行了。題解說的好啊!考慮操作一,連的兩個點如果同色,直接合併,然後這個顏色的聯通塊 1,然後合併bitset,就是或一下。bitset維護的是相連的異色結點。如果兩個點異色,那麼我們就不管他們,直接在兩個bitset裡分別把對方設為1。對於操作三 直接 b x b y count...