題目地址ios
今天是小Z的生日,同窗們爲他帶來了一塊蛋糕。ide
這塊蛋糕是一個長方體,被用不一樣色彩分紅了N個相同的小塊,每小塊都有對應的幸運值。spa
小Z做爲壽星,天然但願吃到的第一塊蛋糕的幸運值總和最大,但小Z最多又只能吃M小塊(M≤N)的蛋糕。code
吃東西天然就不想思考了,因而小Z把這個任務扔給了學OI的你,請你幫他從這N小塊中找出連續的k塊蛋糕(k≤M),使得其上的幸運值最大。xml
第一行包含兩個整數N和M,表示共有N小塊蛋糕,小Z最多隻能吃M小塊。blog
第二行包含空格隔開的N個整數,第i個整數PiPi表明第 i 小塊蛋糕的幸運值。ci
輸出包含一個整數,爲小Z可以獲得的最大幸運值。get
1≤N≤5000001≤N≤500000,
−500≤Pi≤500io
5 2 1 2 3 4 5
9
滑動窗口 前綴和 而後仍是 TLE的版本event
1 #include <iostream> 2 3 4 using namespace std; 5 6 const int N = 5e5+10; 7 8 int luck[N]; 9 int preSum[N]; 10 11 12 13 int m ,n; 14 15 int ans =0; 16 17 int main() 18 { 19 cin >>n>> m; 20 21 for (int i = 1; i <= n; i++) { 22 cin >> luck[i] ; 23 preSum[i] = preSum[i - 1] + luck[i]; 24 } 25 26 for (int l = 0; l <= n; l++) 27 { 28 for (int j = l +1; j <= n; j++) { 29 if (j - l > m) 30 break; 31 int sum = preSum[j] - preSum[l]; 32 if (sum > ans) { 33 ans = sum; 34 } 35 } 36 } 37 38 cout << ans << endl; 39 40 41 42 return 0; 43 }
附上限時內經過的代碼地址 https://www.acwing.com/blog/content/150/