題目鏈結
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...