Noip模擬2 2018/10/18
T1:Matrix
小z 的女朋友送給小z 一個
的矩陣。但是矩陣實在太大了,小z 的女朋友拿不動,只能帶給他兩個長度為n 的整數序列l,t,分別作為矩陣F的第一行和第一列(保證
),並且告訴小z 矩陣可以通過如下方式得到:
現在小z 猜到了係數a,b,他想要計算
模
的值。
忽然想不起從
到
的路徑數了,陣列開小……
對於一個
,通過大力推式子可以發現一定會乘上
對於
,則一定會乘上
然後考慮對於每一個值,會對答案造成多少貢獻
可以發現,每一個值的貢獻次數就是這個位置到
的路徑數
以該位置為起點,那麼就是從
到
,但是第一步是固定的
那麼就成了從
到
類似螞蟻路徑,方案數為
即為對答案的貢獻次數
T2:pq
小q 的女朋友送給小q n個整數。但是這些數太大了,小q 的女朋友拿不動,於是拜託小q把這些數減少一些。
小q 每次可以選擇其中的兩個x,y (不能同時選擇同一個數) 變成x−P,y−Q,現在他希望能知道最多能幫女朋友減掉多少P,Q。
設
表示處理到第
個數,還有
個
,
個
沒處理,存的是已經處理的個數
可以發現,如果
的個數為
,那麼
的個數的最大值不會超過
如果
的個數為
,那麼
的個數的最大值不會超過
如果都不為零,那麼
的個數都不會超過
根據這個性質,我們可以暴力把
拆成
個
,
個
分類討論
和
,
和
的大小,然後統計答案
但是陣列
會炸,因為每一次只會有
對答案造成貢獻,可以把i滾動掉
時間效率
T3:graph
小f 的女朋友送給小f 一個有n個點m條邊的無向圖。但是這個無向圖太大了,小f 的女朋友拿不動,於是小f 希望只保留圖的一部分。在這張圖上,對於第i條邊
,從
到
的代價為
,從
到
的代價為
。
小f 希望只保留一個包含1號點的有向環(不能有重複的點),使得環上代價之和最小。
因為環中一定有節點
,那麼就從1開始大力DFS,陣列開夠有
%
那麼我們可以把
拆成
個點,暴力列舉環上與
相連的兩點,取最小值,效率為
,
%
然後考慮優化
我們可以把與
相連的點分成兩部分,然後跑最短路,但是有可能最短的兩個點在一個集合中,考慮優秀的分組方式
考慮按位分組,可以保證對於任意的
都一定會有一次分在不同的兩組,需要分成
組,然後統計最小值即可
時間效率