牛客寒假訓練營第二場D 整除分塊

2022-07-06 21:12:17 字數 1349 閱讀 2726

牛客寒假訓練營第二場d題

題意就是\(s = \ \rfloor\}\),其中\(i\in[1, n]\),輸入t,n,x。t表示測試的個數,求每個測試\(\lfloor \dfrac \rfloor\)在去重集合s中降序排序第幾大。

2 // 測試的個數

25 9

1000000000 1000000000

8

63244

當n=25時候,\(s=\\)

\(\lfloor \dfrac \rfloor=2\),2在s集合中是降序排列的第8個,所以輸出8

1、首先了解一下整除分塊的性質,對於乙個正整數n

1、\(\lfloor \dfrac \rfloor\)最多有\(2\sqrt\)種

證明:根據這個題目別人的**我可以知道:當\(\lfloor \sqrt \rfloor = \lfloor \dfrac}\rfloor\)時,有\(2\sqrt - 1\)種(不知道如何證明暫時

2、\(b = \lfloor \dfrac \rfloor\) 時, \(a = \lfloor \dfrac \rfloor\)

這個類似於實數除法中除數和商的互逆性質:$b = \dfrac $ 時, \(a = \dfrac\)

不知如何證明

3、對於\(\lfloor \dfrac \rfloor\) 與\(\lfloor \dfrac \rfloor\)相等時,j最大的取值是\(\lfloor \dfrac \rfloor}\rfloor\)

也就是說\(\forall j \in [i, \lfloor \dfrac \rfloor}\rfloor]\), \(\lfloor \dfrac \rfloor = \lfloor \dfrac \rfloor\)

證明看這個哥哥的:

2、本題解法

#includeusing namespace std;

int t, n, x;

int main()

return 0;

}

這裡主要用到了性質1和2,

比如對於n=25,\(s=\\)

對於另乙個類似的題目,主要用到性質3

求\(\sum_^ \lfloor \dfrac \rfloor\)

// 求和模板

#define long long ll

void summ(ll n)

return ans;

}

牛客寒假演算法訓練營第二場 I建通道

首先,我們要建立的是乙個最小生成樹 跟最小生成樹其實沒關係 這些資料在位運算時有一些規律 1.兩個相同的數lowbit 結果為0,所以如果有兩個點的權值相同我們一定會讓他們兩個相連,由此,我們可以先對權值進行排序去重,去重後的權值個數是我們後面要計算的權值,那些相同的權值,因為我們要把它們連起來,並...

2019牛客暑期多校訓練營(第二場)

題意 題解 c 版本一 include using namespace std typedef long long ll const int mod 1e9 7 ll power ll a,ll b a是底數,b是次冪 return ans ll phi ll n 求尤拉函式值 返回值為多少個與n互...

2019牛客暑期多校訓練營(第二場)

有2 n個人,平均分為兩隊,當i和j不在同一隊時,獲得權值vij v vi j 求權值總和的最大值 暴力!暴力!暴力!首先劃分28個人有c 2814 c c2 814 種情況,約為4e7,然後計算權值總和本來需要14 14的複雜度,這樣肯定會t,因此需要想辦法優化這個14 14,於是我在翻別人的 的...