清北冬令營真題泛做

2022-04-29 19:51:07 字數 4828 閱讀 5440

這段時間為了準備冬令營把清北冬令營真題都做了一下。更個博回顧一下(免得你們老說我咕咕咕)。

先寫良心pku的題再寫thu的題,

主要是thu的題和pku比起來真的毒瘤好多......

乙個比較顯然的暴力是歸併排序,每次直接前字尾計算答案即可。

為啥不用線段樹合併代替歸併排序呢?

暴力線段樹合併,合併的過程中順便算一下即可,由於權值區間不交所以複雜度乙個\(log\)。

順著題意模擬即可。

強化牌的數值都大於\(1\)意味著多打一張攻擊牌不如的多打一張強化牌。

列舉抽中了幾張強化牌,當強化牌數量小於\(k\)時,一定是用所有強化牌加上最大的幾張攻擊牌,

當強化牌數量大於等於\(k\)時,為前\(k-1\)大的強化牌加上最大的攻擊牌。

把攻擊牌與強化牌按照價值從大往小排序,先算總和最後除方案算概率,隨便dp一下就行了。

九老師:這是我能想到的最好的模擬題了!然而現場無一人得分......我選擇死亡。

這個題還是有點意思。

\(n\leq 20\)肯定是狀壓dp,很自然想到直接狀壓已經被\(ban\)掉的點有哪些。

怎麼轉移?

把視野放大,考慮全域性合法排列的生成,列舉加入最大獨立集的點是哪個,

然後把這個點放到第乙個空缺的位置,再把與之相鄰點放到後面的任意位置(選對應個空位)。

顯然轉移過程中我們保證了獨立集的點之間順序,所以計數是不重不漏的。

至於要同時求最大值與方案數,兩個一起dp,維護一下即可。

很明顯的終止態容斥問題了,列舉誰在\(1\)號獵人後面死,那麼剩下的獵人就不用管了。

還有乙個問題就是打到了死的獵人怎麼辦,

這裡比較妙,我們可以認為打到了死的當作鞭屍,再打一次直到打到乙個活著的獵人。

根據賭徒輸光那套理論,新舊問題顯然等價。

列出式子,無窮級數化簡後發現容斥係數只與\(w\)之和有關,用分治\(fft\)就可以計算。

使用\(min-max\)容斥轉為求任意乙個點被到達的期望步數。

這是經典問題,狀壓dp後樹上高斯消元解決。

來搞笑的吧?討論一下兩個組合數一加就沒了。(放普及組t2挺合適的)

乙個比較自然的想法:把最大字首和拆分成兩段,前面是最大字首,後面的每乙個字首都小於\(0\)。

這樣算答案只需要列舉字首是什麼,

後面的部分很好求,設\(g\)如上述,狀壓dp每次向後插入乙個元素時\(check\)一下就能轉移。

關於前面部分:設\(f_t\)表示包含\(t\)集合元素,且最大極長字首和等於全集和的方案數。

智障選手:容斥減去不合法的,發現不合法部分為\(f\)和\(g\)的卷積,暴力子集卷積。(顯然過不了)。

高智商選手:把向後插入改為向前插入,那麼只要保證插入前這個字尾非正,可以很方便的轉移。

講真這題真的有驚豔到我。

不好意思,這題咕了。

首先可以注意到最多隻會向後跳一次,因為跳兩次再跳回去絕對沒有意義。

其次,由於上述性質,從後面的點跳到前面的點後,前面的點再往後跳也絕對沒有意義。

因為如果它後跳後再往前跳一大步,那麼它往後跳到的那個點一定可以通過它的**點直接到達。

然後就可以倍增了,設\(f_\)表示\([i,n]\)中的點向左跳\(2^j\)可達的最左位置(向右跳不管)。

為了算答案同時記\(g_\)表示從\(i\)點出發,跳到\([f_,i)\)這些位置所需要的步數和。

首先\(f\)的轉移顯然,\(g\)的轉移:\(g_ = g_ + g_,j-1} + 2^(f_ - f_)\)。

算答案時,把答案轉為字尾相減形式,倍增處理,

為了減少特判,先把起點\(i\)移到\(l_i\),最後再全域性加上一步(第一步無論左跳還是右跳代價都為1)。

長為\(i\)的\(border\)存在的條件:不存在\(d\),滿足\((n-i)|d\),且\(s_j \neq s_\)。

問題變為判斷\(s_j \neq s_\)的存在性,字符集很小,列舉字元用\(fft\)做匹配即可。

預處理圓被多邊形包含的最小半徑。

若不包含,求交點後極角排序,對於一段弧,用轉角公式求中點,然後判中點是否在多邊形內。

由於資料範圍很小,所以上述過程全部直接暴力就行了。卡精度警告。

建乙個trie樹,由於字串很短所以每個點開個vector暴力存每個時間的最早出現即可。

查答案時做匹配到對應結點,然後直接查vector就行了。

設\(g_\)表示區間\([l,r]\)最後一次消除的最大、最小值分別為\(x,y\)的最優方案。

設\(f_\)表示把區間\([l,r]\)消完的最優方案。

那麼顯然\(f_ = min(f_ + g_ + a + b(x-y)^2)\),即列舉最後一段在**。

關於\(g_\),我們關鍵在於記錄了最後一次消除的資訊(從而實現了跨多段消除)。

連續轉移:\(g_ \to g_),min(y,w_)}\)。

跨段轉移:\(g_ + f_ \to g_\)。複雜度\(o(n^5)\)鬆一鬆就過去了。

不是很會啊......會的大佬教教我唄......

把三個函式黴黴展開,然後發現其導數都是迴圈的。

因為有斷邊刪邊操作,所以用\(lct\)暴力維護一下路徑係數和就行了。

關於只有\(t=0\)的資料,其答案總和就是乙個二分圖計數,暴力狀壓這樣就有\(40\)分了。

關於\(t=1,t=2\),只能說陳老師真的神了......

考慮暴力,設\(f_\)表示左半邊匹配上集合為\(s\),右半邊匹配上集合為\(t\)的期望條數。

注意到\(s\),\(t\)的\(bit.count\)時刻相同,暴力搜一下可以發現合法狀態其實並不多,所以用\(map\)記搜。

在記搜的每一層,首先找到最小的未匹配點\(u\),然後進行決策。

對於\(t=0\)的邊\((u,v)\),顯然直接加入:\(f_ = f_ + \fracf_\) 。

對於\(t=1\)、\(t=2\)的邊,考率把它拆分成兩條\(t=0\)的邊,然後跟上面一樣的做。

但這樣答案肯定不對,考慮一下答案的偏轉量,我們手動修正一下。

對於\(t=1\)的邊,

若只有一條邊在匹配中,概率為\(50\%\),正確。若都不在匹配中,無影響不管。

若兩條邊同時出現在匹配中,此時概率為\(25\%\)不對,所以需要額外新增\(25\%\)的概率進行修正。

對於\(t=2\)的邊,

若只有一條邊在匹配中,概率為\(50\%\),正確。若都不在匹配中,無影響不管。

若兩條邊同時出現在匹配中,此時概率為\(25\%\)非法,所以需要額外減少\(25\%\)的概率進行修正。

關於點\(1\),爆搜即可。

關於點\(2\),拿點\(1\)的爆搜程式跑上個十幾分鐘就能跑出來。

關於點\(3\),裸揹包直接做。

關於點\(4,5\),每個抽屜的容積一樣,所以就是二分圖最大權匹配,\(km\)即可。

關於點\(6\),抽屜的容積差異幾乎沒有,所以依舊跑二分圖最大權匹配就能得解。

關於點\(7\),發現只有第一根蘿蔔比較詭異,暴力列舉一下它放**,剩下的依舊\(km\)解決。

關於點\(8,9,10\),退火隨機化,至於能有多少分看臉。

看到\(k\)那麼小顯然列舉一下巧克力集合,

然後如果不管第二問那麼問題變為了關鍵點生成樹,用斯坦那樹搞搞這樣就有\(56\)分了。

關於第二問其實也是乙個現套路。

二分中位數,把小於等於\(mid\)的點設為\(-1\),大於\(mid\)的點設為\(1\)。

那麼我們希望在點數最少的前提下,上述權值也最小,故只需要把點數的權值設的很大就行了。

最後乙個問題在於巧克力種類很多的時候怎麼辦。

把巧克力種類隨機對映到\([1,k]\)然後多做幾次上述演算法,據說可以證明這樣正確率高達

\(99\%\)。

問題轉化每給定乙個集合,求滿足異或後每一位為\(0\)的子集個數。

一種\(50\)分:按照大於\(\sqrt\)的質因子分組,把其他質因子暴力狀壓\(dp\)。

另一種\(50\)分:子集異或為\(0\)顯然可以使用線性基高斯消元,最後\(2\)的自由元個數次冪即答案。

結合一下就有\(80\)分:

線性基中不儲存大於\(\sqrt\)的質因子的基,分組後外部消一下這一位然後再插入到線性基中。

再結合乙個結論:當區間大於\(6000\)時,答案即區間內出現的質因子個數。

然後就能夠\(ac\)辣!是不是很棒?

顯然是個二分圖最大權匹配問題,裸跑\(km\)白送\(70\)分不謝。

考慮優化建圖。

顯然每張桌子的位置之間可以順次連邊,這樣每個點就只用向可達桌子的對應位置連邊了。

然而這還是只有\(70\)分。

現在的問題主要在於桌子與桌子之間的連邊,考慮線段樹優化。

對於\(m\)個位置分別開兩棵線段樹,分別表示向左走和向右走,每次移向子樹時加上對應距離即可。

如果把三個元素看成向量的話(後面再加乙個區間長度),

那麼不難發現每種修改對應乘上乙個矩陣,而矩陣又有乘法結合率,所以用線段樹維護。

看到環先套乙個\(polya\),問題轉化為求大小為\(n\)的合法環的方案數(不考慮同構)。

考慮暴力怎麼做,我們的難點在於要保證首尾合法。

可以這樣:暴力壓\(m^\)種狀態(最靠前的乙個點可以不計),然後把轉移矩陣看成臨接矩陣。

這樣我們只需要保證轉移若干次後回到自己即可。

當\(m>5\)時,矩陣過大顯然會\(tle\)。

我們本地暴力\(dp\)(方法跟上面一樣,只是暴力轉移不要構矩陣)把每乙個\(m\)的前\(1000\)項跑出來。

把這些資料扔到\(bm\)裡去,發現竟然存在遞推式!(當\(m=7\)時,遞推式長度達到最大為\(410\))。

然後暴力\(polya\),內部算方案直接用遞推式,矩乘依舊無法通過此題所以需要使用\(ch\)線性遞推。

GDKOI2018 清北冬令營滾粗記

清北冬令營 比較gg day1t1沒水到分,day2t3感覺k 2的情況之前做過某題,但是沒寫 還是在二中比賽。結果這次沒有套房只能和fyj和wd住一起了 晚上跑過去腐敗到深夜無視另外兩個kmp 12 00 才和fyj睡覺 一起來 wtf 7點了 跑下去吃完早餐直接滾粗 到考場一看8 15 欸好像遲...

2015 2 1冬令營日誌

今天的任務 1.寫一篇部落格。2.寫乙個週報。3.聽張老師的講座,感覺還是獲益匪淺。他說我們學校的軟體工程專業現況是有實力與清華北大媲美的,這讓我感到十分榮幸,雖然沒有親自去過清華北大,但這兩所學校的名氣確實是如雷貫耳的,瞬間覺得我還是走上了乙個高富帥的專業。但是,以後的事情還是需要我繼續努力堅持才...

2019徐州冬令營

day1 長短 模擬 資料提取碼 1t2n 題目鏈結 day2 生成排列 資料提取碼 z6e7 題目鏈結 排列組合計數的實驗範例 catalan數 bell數 stirling數 day3 鴿巢原理 資料提取碼 k6b9 題目鏈結 容斥原理 p lya計數公式 群和p lya定理基礎知識 day4 ...