BZOJ 3969 Low Power 解題報告

2022-08-03 14:09:10 字數 913 閱讀 9446

我們首先將所有電池排序,那麼我們可以找到一組最優方案,使得一台機器的能量之差是相鄰兩電池的能量之差。

然後我們就二分這個答案,從前往後貪心地選這個數對,然後看是否所有的數對都是滿足條件的。

假設這個數對是 i - 1, i,並且是第 j 個數對,那麼我們稱滿足條件為:

2nk - i + 2 >= 2k(n - j + 1)

意思就是能拿出足夠多的電池來組成機械人。

然後注意特判:如果不能選出足夠多的數對就返回 false,我在這裡 wa 到死。。。

畢竟 gromah 太弱,只會做水題。

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7#define n 1000000 + 589

intn, k, size, max, a[n];

1011 inline int

getint()

1220

21 inline bool judge(int

m)22

30return !cnt;31}

3233

intmain()

3447 sort(a + 1, a + size + 1

);48

int l = a[2] - a[1], r =max;

49while (l 5055 printf("

%d\n

", l);

5657

#ifndef online_judge

58fclose(stdin);

59fclose(stdout);

60#endif

61return0;

62 }

每日一題力扣396

給定乙個長度為 n 的整數陣列 a 假設 bk 是陣列 a 順時針旋轉 k 個位置後的陣列,我們定義 a 的 旋轉函式 f 為 f k 0 bk 0 1 bk 1 n 1 bk n 1 計算f 0 f 1 f n 1 中的最大值。方案一 找規律找出來的,class solution def maxr...

396 旋轉函式 dp 數學找規律

難度中等95 假設bk是陣列a順時針旋轉 k 個位置後的陣列,我們定義a的 旋轉函式 f為 f k 0 bk 0 1 bk 1 n 1 bk n 1 計算f 0 f 1 f n 1 中的最大值。注意 可以認為n 的值小於 105。示例 a 4,3,2,6 f 0 0 4 1 3 2 2 3 6 0 ...

CodeForces 396A 數論 組合數學

好久沒做數論的東西了,乙個獲取素數的預處理跟素因子分解寫錯了,哭瞎了,呵呵,首先ai最大值為10 9,n為500,最壞的情況 m最大值為500個10 9相乘,肯定不能獲取m了,首選每乙個ai肯定是m的乙個因子,然後能分解就把ai給分解素因子,這樣全部的ai都分解了 就能得到m的 所有素因子 以及 所...