hoj5586 區間和最大

2021-07-08 18:12:00 字數 850 閱讀 1063

題意:

給你一串數,然後給你f(x) = (1890 * x + 143) mod 10007;

讓你選擇某一段進行上述的變換;

當然你也可以不選;

最終求乙個變換之後加起來的最大值;

理解:推了一下,發現變換之後有的損失很多,有的增加很多;

然後一一列出來,發現,某些區間加起來可以忽略損失;

就這樣,我就覺的是區間和最大;

然後不造怎麼寫區間和最大;

就在網上學了一種;

其方法是給兩個變數;

以o(n)的時間掃一遍;

不斷給第乙個加值並那它和0取大;

然後第二個就和第乙個不斷取大;

這樣第二個就是區間和最大;

**如下:

#include #include #include #include #include #include #include #include #include using namespace std;

#define ll long long

#define p pair#define x first

#define y second

ll max(ll a, ll b)

int main()

vectorsum;

ll ans = 0;

for (int i = 0; i < n; ++i)

ll t1 = 0, t2 = 0;

for (int i = 0; i < n; ++i)

ans += t2;

printf("%lld\n", ans);

}return 0;

}

2651 區間和的和

輸入乙個長度為n的陣列a包括 n 1 n 2 個區間。每個區間所有數的和,被稱為區間和,求所有 n 1 n 2 個區間和的和。由於數值較大,輸出mod 1e9 7的結果。例如 3個數1 2 3,共有6個子區間,包含的數字如下 這些區間求和為1 2 3 3 5 6,這6個數字再求和為20.求出每個位置...

327 區間和的個數

今天的題目還是看了一陣子 我是鏈結 意思是任意子區間內所有元素的和要在lower和upper之間,可以取等 所以題目中 0,0 2,2 都指向各自位置的元素,0,2 就是從第0個元素 一直加到 第2 個元素 等於 2 所以這就是為什麼輸出是3.class solution sum nums i fo...

327 區間和的個數

給定乙個整數陣列 nums,返回區間和在 lower,upper 之間的個數,包含 lower 和 upper。區間和 s i,j 表示在 nums 中,位置從 i 到 j 的元素之和,包含 i 和 j i j 說明 最直觀的演算法複雜度是 o n2 請在此基礎上優化你的演算法。想到了字首和,同時由...