牛客練習賽73 C 生涯回憶錄 題解

2022-05-09 19:42:50 字數 1078 閱讀 6592

簡要題意:給定乙個集合,求集合裡面每乙個子集的 mex。

這裡定義乙個集合的 mex 為這個集合最小的沒有出現的數

考慮乙個數作為 mex 在幾個子集裡面出現,首先它能成為 mex 需要小於它的自然數都至少出現乙個,也就是它必須小於等於給定的集合的 mex。

列舉每乙個 mex,記錄每個可能稱為 mex 的數 \(x\) 的出現次數 \(cnt_x\),那麼對與小於當前 mex 的數先減去必須選的那乙個數,然後乘法原理乘起來子集個數,再乘上大於當前 mex 的數的子集個數就是當前 mex 的出現次數,列舉到的每乙個 mex 貢獻的答案加起來即可。

時間複雜度 \(\mathcal(n\log n)\),列舉 mex \(\mathcal(n)\),其中有個快速冪的 \(\mathcal(\log n)\)。

//code by do_while_true

#include#include#include#define ll long long

#define re register

#define int long long

const int mod = 20000311;

inline int max(int x, int y)

inline int min(int x, int y)

inline int abs(int x)

inline int read()

while(ch >= '0' && ch <= '9')

return w ? ~r + 1 : r;

}int qpow(int x, int y)

return sumq;

}#undef int

const int n = 500010;

int n, a[n], cnt[n];

ll ans;

signed main()

ll sum = 1, ssum = 0;

for(int i = 1; i <= up + 1; ++i)

printf("%lld\n", ans);

return 0;

}

牛客練習賽73 C 生涯回憶錄 組合數學

傳送門 考慮列舉貢獻為i ii的方案數有多少種 貢獻為i ii,那麼 1,i 1 1,i 1 1,i 1 每種數字至少都選了乙個 至少選乙個只需要所有可能減1 11就好了 這部分方案數是 j 1i 1 2vi s j 1 prod limits 2 1 j 1 i 1 2 vis j 1 然後大於等...

牛客練習賽 生涯回憶錄(dfs,組合數,思維)

題意 給定n 1e5個數字,求所有區間的mex值之和。題解 很模板的一道題目了,我怎麼就想了那麼久?第一題都錯了5發,看來我還是不夠平常心對待比賽emmmm。唉什麼時候才能懂得?1.討論不選1 選1 不選2 選2 唉,遞迴就遞迴,怎麼就盲目遞迴,明知道是 錯了 討論方式總數的地方 仔細一思考就出來了...

牛客練習賽73

傳送門 思路 本題有兩種方法,一是模擬,將所有人的總分算出來後進行排序,只要小a考到第m個人的分數那麼就可以,但資料有坑,減去校測分後得到的可能是負數,即意味著小a只需要考0分即可。二是正解,題目要求找乙個數就可以聯想到二分,對於小數操作就可以放大為整數,就是mid85 p15,然後將資料型別擴充套...