題目鏈結
其實這道題也不算是特別難,也跟普及組的題目的難度差不多。
題目基本演算法:最大欄位和+字首和維護
由於水都是正數,我們能加多少就加多少,故我們必須要用完k
kk次。而且我們要保證我們最後都能把所有水加到一杯水裡面去,所以題目就轉化成了求一段長度為k+1
k + 1
k+1的最大子段和。
#include
using
namespace std;
const
int maxn=
1000010
;long
long ar[maxn]
,sum[maxn]
,ans;
intmain()
m++;for
(int i=
0;i<=n-m;i++
)printf
("%d"
,ans)
;return0;
}
NOI Online 3 提高組 水壺
在乙個長度為 n 的序列中求出長度為 k 1 的最大子段。本題唯一的需要注意的一點是當 k n 時要輸出所有數的和,像我的考場 scanf d d n,k k if k n k n for int i 1 i n i scanf d a i for int i 1 i k i op a i for ...
NOI Online 3 提高組 優秀子串行
點此看題 首先有乙個樸素dpdp dp,因為每個數字都只會最多出現1 11次,而且出現數字相同的不同情況最後也可以一起算答案 和一定 那麼我們只需要統計出方案數,dp i dp i dp i 為二進位制位出現的裝壓為i ii,轉移列舉包含i ii的狀態j jj,設a i a i a i 為值i ii...
NOI Online 3 提高組 魔法值
我是真沒想到可以用 flo yd floyd floy d 好吧其實也不是正宗的吧 感覺這個演算法已經被我遺忘了 qwq qwqqw q。結果考場上把快速冪又打爆了 定義 to i j k to i j k to i j k 為 i ii 到 j jj 的路徑長度為 2 k2 k 2k的方案總數,d...