牛客寒假訓練營第二場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,於是我在翻別人的 的...