題意:
給你一串數,然後給你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 請在此基礎上優化你的演算法。想到了字首和,同時由...