在乙個長度為 \(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 (int i = k + 1; i <= n; i++)
printf("%lld", ans);
要是 \(n\leq k\) 就鍋了。
正確**:
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 1; i <= k + 1; i++)
op += a[i];
for (int i = min(k + 1, n); i <= n; i++)
printf("%lld", ans);
NOI Online 3 提高組 第一題 水壺
題目鏈結 其實這道題也不算是特別難,也跟普及組的題目的難度差不多。題目基本演算法 最大欄位和 字首和維護 由於水都是正數,我們能加多少就加多少,故我們必須要用完k kk次。而且我們要保證我們最後都能把所有水加到一杯水裡面去,所以題目就轉化成了求一段長度為k 1 k 1 k 1的最大子段和。inclu...
NOI Online 3 提高組 T1水壺 題解
有 n 個容量無窮大的水壺,它們從 1 sim n 編號,初始時 i 號水壺中裝有 a i 單位的水。你可以進行不超過 k 次操作,每次操作需要選擇乙個滿足 1 x n 1 的編號 x 然後把 x 號水壺中的水全部倒入 x 1 號水壺中。最後你可以任意選擇恰好乙個水壺,並喝掉水壺中所有的水。現在請你...
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...