description
input
第一行兩個正整數 n 和 k 。
第二行包含 n 個正整數,第 i 個正整數表示 ai。
output
一行乙個正整數,表示答案。
sample input
【樣例 1 輸入】4 31 2 3 4
【樣例 2 輸入】
4 24 4 7 4
sample output
【樣例 1 輸出】3【樣例 2 輸出】
6
data constraint
對於 30% 的資料,n ≤ 3000;
對於另外 20% 的資料,數列 a 為隨機生成;
對於 100% 的資料,1 ≤ n ≤ 3 × 10^5 , 1 ≤ k ≤ 10^6 , 1 ≤ ai ≤ 10^9。
1 #include 2 #include 3 #include 4 #include 5 #include 6using
namespace
std;
7int n,k,tot,a[300010],d[1000010][2],pos[300010],mx[300010],sum[300010];8
long
long
ans;
9void doit(int l,int
r)10
21 mx[tot+1]=r+1;22
int p=1,k1=mid+1,mxl=0,suml=0;23
for (int i=mid;i>=l;i--)
2432
for (int i=mid+1;i1]--;
33for (int i=k1;i<=r;i++) d[(sum[i]-a[pos[i]]%k+k)%k][0]--;
34 doit(l,mid),doit(mid+1
,r);35}
36int
main()
37
簡單的分治策略
簡單的分治策略 分治,是程式設計中常用的一種策略,例如在歸併排序中就有使用。分治策略是一種遞迴求解問題的方法,在每層的遞迴中可分為三個步驟 分解 divide 解決 conquer 合併 combine 分解 divide 指的是將問題劃分為一些子問題,子問題與原問題具有相同的形式,但規模較之更小。...
分治演算法的簡單應用
1.要求2n個數的中位數,採用分治策略。每次劃分後,都會去掉一半的數,只剩原來一半的數。遞推關係式為 t n t n 2 o 1 由master定理,可得時間複雜度為o logn include include define n 1000000 using namespace std int a n...
簡單的緩衝區溢位
這是乙個簡單的緩衝區溢位程式,是我在oday上面學到的,嘿嘿嘿,每個人寫的shellcode不一樣所以實現的目的也不一樣。大家自由發揮吧。include include include include define password 1234567 int verify password char ...