2021 04 04 給定乙個非負陣列arr,和乙個正數m。 返回arr的所有子串行 如何解答呢?

時間 2021-06-06 11:13:19

1樓:Joker

先求字首和。

掃瞄字首和陣列 Sum[i],Sum[i]%m 插入到 Set 裡面;同時求 Sum[i]%m 和 Sum[i]%m-m 的upper_bound(),就是比它大的最小 Set 中元素; upper_bound() 對應乙個 Sum[j];用這個 (Sum[i] - Sum[j]) % m 更新答案。更新答案的時候標記一下 j 是什麼就可以啦。

時間複雜度 O(N log N),log來自 Set 的overhead

抱歉,題目看錯了

不是子陣列

類似於揹包問題,用動態規劃 DP。

子串行可以 O(NM)。

如果M超大,就 O(2^N) 暴力搜尋。

如果arr數字比起M超小,可以嘗試全部選中。

2樓:

令f(i,j)表示由前i個數組成的子串行中是否存在其和%m為j的子串行。

f(i,j)=f(i-1,j) or f(i-1,(m+j-arr[i])%m)

初態 f(0,0)=true

然後找f(n,x)=true時的那個最大的x用和01揹包類似的優化可以把空間複雜度降為O(m)時間複雜度 O(nm)

數字三角形取模最大值設計狀態也是這個套路

2021 03 20 給定乙個二維陣列matrix,其中的值不是0就是1,返回全部由 如何解答呢?

mathe 我們可以先考慮計算每個1它左邊包含自身連續的1的數目 如果它本身為0,那麼計數也設定為0 比如對於矩陣 0110111 1100011 1110011 0111100 計數結果為 0120123 1200012 1230012 0123400 然後依次分析每一列 比如第一列有兩個連續的1...

2021 05 12 給定乙個陣列arr,只能對arr中的乙個子陣列排序, 但是想讓 如何解答呢?

找到最小下標 使得 arr i 1 eeimg 1 找到最大下標 使得 arr j eeimg 1 找到 的時間複雜度是 若 不存在,則說明陣列已經排好序了,結果是 下面假設 均存在且容易看出 假設 求出 的時間複雜度是 只要 且 b eeimg 1 就令 然後令 遞減,直到 或者 只要 且 就令 ...

請問在乙個公理體系中,給定乙個指定命題,有沒有通法判斷該命題在體系內是可以證明,證偽或者不可判斷的?

free POC 滿足一致性的 即不存在矛盾的 命題系統可以簡單分為兩類 完全的和不完全的。比如 命題演算系統就是完全的,所以,凡是真的合式公式,在命題演算系統中就是 可證 的,凡是假的合式公式,在系統中的否命題就是可證的。而包含了皮亞諾算術系統的邏輯系統就是不可完全的 細節請去看哥德爾不完全性定理...