牛客小白月賽30(個人題解)

2022-01-09 23:09:01 字數 2330 閱讀 4838

最近沉迷寫前端**,現在緩過來簡單補下

簡單的並查集模板

待補

math

// author : riotian

// time : 20/12/07

#include using namespace std;

typedef long long ll;

const int n = 1e5 + 10;

int main()

素數篩反向選

// author : riotian

#include using namespace std;

typedef long long ll;

const int n = 1e5 + 10;

int n;

bool isprime[n];

int main() }}

// cout << cnt << endl;

cout << (n <= 3 ? -1 : cnt + 2) << endl;

}

模擬題

如果兩數字位數不同就先補零便於後面處理

// author : riotian

// time : 20/12/07

#include using namespace std;

typedef long long ll;

const int n = 1e5 + 10;

string a, b, ans;

int cot = 0, len;

bool lin;

int main() else

len = a.size();

ans = "";

lin = true;

for (int i = 0; i < len; i++)

if (ans.size() == 0)

ans += "0";

cout << ans << endl;

}

模擬一下樣例1,會發現16 + 15,容易發下16為5項和,而\(15 = max(a[i]) * (n - 2)\)

// author : riotian

// time : 20/12/07

#include using namespace std;

typedef long long ll;

const int n = 2e5 + 10;

int n;

ll a[n];

int main()

cout << max * (n - 2) + cnt;

}

類似二分圖,在滿足條件的情況下盡量增加匹配數。

直接寫二分圖肯定很麻煩,但轉過來一想,為陣列排序呢?

\[2\ 3\ 4\ 6\ 7\\

2\ 3\ 4\ 4\ 6\\

\\從後往前匹配物件(數值盡量相近,這樣就可以把小的數字留給其他的)\\

7匹配6\\

6匹配4\\

4匹配3\\

3匹配2\\

由於不存在空閒比2小的數字了,所以最終成功匹配數為4

\]

// author : riotian

// time : 20/12/07

#include using namespace std;

typedef long long ll;

const int n = 2e5 + 10;

int n, m;

ll a[n], b[n];

int main()

cout << ans << endl;

}

看到題的瞬間想用線段樹,但簡單算了下時間複雜度,可能會超時,所以轉而想了想主席樹(沒了解的同學可以看這裡:here),但覺得牛客應該不會在小白賽出這種碼量大的題。

被迫無奈看了下題解,發現原來快速寫下優先佇列即可(都沒想到這個)

以下是ac**

// author : riotian

// time : 20/12/07

#include using namespace std;

typedef long long ll;

const int n = 2e5 + 10;

ll a[n];

priority_queueque;

int main()

} else

}}

這兩個待補

牛客小白月賽 30

並查集或者最小生成樹 並查集 include include include include using namespace std typedef long long ll const int maxn 2e 5 int f maxn struct node e maxn bool cmp nod...

牛客小白月賽22題解

a 操作序列 單點增加,區間求和,下標最小的非零數變成零,單點查詢。說完了不就線段樹嘛。由於範圍比較大,先存下來,離散化,再進行樹上的操作。注意這裡的左右區間離散化值不一樣的,左邊離散化要找到大於等於左邊界的值,右邊離散化要找到小於等於右邊界的值。b 樹上子鏈 類似於 dp 求樹直徑 c 交換遊戲 ...

牛客小白月賽24 題解

牛客小白月賽24 題解 最後還剩一道計算幾何,其實可以ak,但沒必要 b 簽到 include using namespace std const int n 2e5 10 int a n int main printf d n ans return 0 c 還行 includeusing name...