題解 六省聯考2017

2022-03-16 14:57:14 字數 4084 閱讀 3642

題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。

為了不影響**體驗決定把**刪去,需要請私信我,qq或皆可。

題目裡的難度評分是個人評分,僅供參考開心就好。

題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度。請最小化不滿意度。

先考慮學生的不滿意度怎麼算:

設\(f_i\)表示以第\(i\)天結束學生們不滿意度的總和,則\(f_i-f_=\)第\(i\)天學生們的不滿意度總和。

\(f_i=σ_^n max(0,i-b_j)×c\)

發現資料範圍不大,考慮預處理這個式子,很顯然就是個字首和。

然後再考慮安排老師。分類討論一下。

若\(a \geq b\),肯定優先選擇\(b\)操作,即加老師,這樣只會使得結束時間都提前。

若\(a

考慮用\(a\)的最多次數:假設第\(i\)天結束,則所有結束時間比\(i\)

小的都可以貢獻老師出來,這就是使用\(a\)的最多次數。可以用字首和預處理出來。

由於資料範圍不大,字首和計算又是\(o(1)\)的,直接列舉結束日期計算即可。

複雜度\(o(maxn)\),\(maxn\)表示最晚結束日期。

題意是給定\(n,k,r,p\),求\(σ_^∞\ \ c_^\ \ mod\ \  p\) 。

由於\(m>n\)的時候\(c_^m=0\),所以實際上\(i\)只要從\(0\)~\(n\)列舉即可。

看起來就很休閒,你會\(lucas\)就發現送了\(60\%\),預處理一下階乘和逆元,列舉\(i\)就可以了。

然後注意到\(n \leq 10^9,0 \leq r \leq k \leq 50\),於是想到矩陣加速。

組合數的式子是現成的,可以把意義從「\(i\)個裡面選\(j\)個」改成「\(i\)個裡面選\(x\%k==j\)個」,直接套用即可。

就是構造上圖的矩陣,發現初始值為\(0\)所以不要管了,直接把中間的做個快速冪,然後就做完了。時間複雜度\(o(log(nk))\)。

題意是有一些給定初始狀態的燈,希望他們都滅掉。按下乙個開關會影響它及它約數的狀態。開始隨機按一些開關,如果最後剩下需要的步數\(<=k\)就用最優解按。求期望次數\(×n!\)

首先明確怎麼算最優解:我們按開關只會影響比它小的,所以我們從大到小按開關,就是列舉每個

\(i\)的倍數放進

\(vector\),這個複雜度是調和級數也就是\(n\ ln\ n\)的。所以我們統計答案只需要統計\(\sum_^\ f[i]\),\(need\)表示最優解下需要次數。

然後考慮隨機乙個按,那我們可能按到當前最優的或其他的。

按到最優解:\(\frac×1\),這個就表示按到對的按鈕的概率為\(\frac\),貢獻為\(1\)次(期望=概率×貢獻)。

按到其他按鈕:\(\frac×(1+f[i]+f[i+1])\)。這個\(1\)就表示這個按錯了的開關還要重新按回來一遍以消除影響,\(f[i]+f[i+1]\)就表示還需要\(f[i]+f[i+1]\)次操作變成\(i-1\)這個狀態。

然後化簡一下式子移項把\(f[i]\)推出來,答案再乘上\(n!\)即可。邊界為\(f[n]=1\)。注意\(f[1...k]=1\),因為\(<=k\)直接用最優解走了。時間複雜度\(o(n)\)。

題意是給你兩種操作\(0\)和\(1\),\(0\)是把\([l,r]\)中的所有\(a_i\)替換成\(c^\),其中\(c\)是乙個給定常數;\(1\)是求\(\sum_^r \ \ a_i\)。

這個東西肯定是線段樹維護,但是單純的線段樹肯定會\(tle\)。想到花神遊歷各國那題,就是區間開方用線段樹維護,是找到了區間開方下取整後幾次這個數就變成了\(0\)這一方法進行優化。於是考慮\(c^\)有什麼奇技淫巧。

\(a_i\)多次改變之後就成了這個樣子:\(c^}}}}\)

由擴充套件尤拉定理得知\(a^b\ \ ≡ a^\ \ (mod\ \ p)\)。

於是可以考慮遞迴求解,邊界為\(p=1\)。

但是這還沒完啊,我們如果每次都去遞迴求這個改之後的\(a_i\)還是\(tle\)。

觀察發現這個式子實際上在\(logp\)次之後值就一樣了。為什麼呢?考慮\(\varphi(p)\)的計算公式:\(\varphi(p)=p*\pi_^k\ \ \frac\),其中\(p_i\)表示\(p\)的每個質因子。若\(p\)為偶數,則\(p\)變成\(\varphi(p)\)至少要\(÷2\);若\(p\)為奇數,\(p[i]-1\)必存在偶數,於是\(\varphi(p)\)也為偶數。由此證明\(logp\)次後值就一樣了。於是我們就像花神遊歷各國那題一樣直接維護出現次數\(min\),一旦這個\(min\)達到了邊界我們就不繼續進入子區間搞了。

乙個優化就是預處理\(c\)的冪次方,把快速冪的\(log\)給去掉。於是時間複雜度為\(o(nlog^2n)\)。

題意是選出兩條不相交的鏈,刪去與這兩條鏈相關的邊,最大化連通塊數量。

發現它有\(x=0,1,2\)三個\(subtask\),其實會\(x=0\)就會\(x=1,2\)了。

考慮如何計算連通塊個數:

\(s\)表示選出點的集合,\(deg\)表示點的度數,\(edge\)表示邊,\(lnk\)表示鏈,\(dot\)表示點。

連通塊個數\(=\sum_\ \ deg_i\ -\sum edge \times 2 -lnk +1\)。

然後由於邊數\(=\)選出來點的個數\(+\)鏈數,化簡一下式子得知連通塊個數\(=\sum_\ \ deg_i\ -dots \times2 + lnk +1\)。

知道這個我們就只用處理點和鏈了。

考慮\(dp\)

。這個\(dp\)極其毒瘤要討論很多。

我看了\(shadowice1984\)神仙的題解啥也沒看懂,全網搜了很多自己彙總一下,大概參考了\(shadowice1984,starria,vixbob\)三位神仙的部落格。

現在有以下情況需要討論:(假設當前子樹的根為\(u\),孩子節點為\(v\))

·一條路徑

·一條鏈

·一條路徑+一條鏈

·講不清,學\(starria\)小姐姐畫圖

細節多的一批,慢慢討論慢慢調吧\(qwq\)。

題意是選擇\(i\ \cdots \ j\)的壽司可以獲得\(d_\)的價值(\(i\ \leq \ j\)),而選擇了\(x\)就要付出\(mx^2+cx\)的價值,也就是獲得\(-mx^2-cx\)的價值。最大化獲得價值和。

由於權值不重複計算,我們可以考慮最大權閉合子圖。

最大權閉合子圖的經典模型:有一些物品,選擇其中的每種都會獲得相應價值\(v_i\),但是有形如選\(x\)就要選\(y\)這樣的限制關係,要求是最大化獲得價值。(如果是最小化獲得價值可以全部取相反數,仍是最大化的模型)。

這類問題一般使用最小割解決,即理想最優\(-\)調整代價。這個調整代價指的是調整為合法狀態的代價。

考慮如何建圖:基本模型是,對於乙個點\(i\),如果它的價值\(v_i>0\),我們就把\(s \rightarrow i\)連一條邊,流量為\(v_i\),\(i \rightarrow t\)連一條邊,流量為\(0\),表示不選這個點需要付出\(v_i\)的代價;如果它的價值\(v_i<0\),我們就把\(i \rightarrow t\)連一條邊,流量為\(-v_i\),\(s \rightarrow i\)連一條邊,流量為\(0\),表示選擇這個點需要付出\(-v_i\)的代價。對於所有\(x \rightarrow y\)這樣的限制關係,我們把\(x \rightarrow y\)連一條邊,流量為\(inf\),這樣這條邊就永遠不會被割掉。

再考慮這題:首先發現這個記憶化是個幌子,假設方案①是拿\([1,2],[2,3]\),②是拿\([1,3]\),那麼①會比②多花乙個\(a_2\)的價值,所以一起選更划算。其次發現如果我們選擇了\(d_\),那麼我們也要選擇\(d_\)和\(d_\),於是考慮把\(d_\)看成乙個點,把這個看成限制關係。最關鍵的是處理代價\(mx^2+cx\),看成「對於型別為\(x\)的壽司,每吃乙個就要付出\(x\)的代價,吃過\(x\)後再吃還要付出\(mx^2\)的代價」。於是把每種壽司型別\(x\)也看成乙個點,代價為\(mx^2\),選擇了\(d_\)就必須選擇\(a_i\)。那麼這就是最大權閉合子圖問題模型了。

六省聯考2017 題解

t1 期末考試 題意 有 n 位同學,每位同學都參加了全部的 m 門課程的期末考試,都在焦急的等待成績的公布。第 i 位同學希望在第 t i 天或之前得知所有課程的成績。如果在第 t i 天,有至少一門課程的成績沒有公布,他就會等待最後公布成績的課程公布成績,每等待一天就會產生 c 不愉快度。對於第...

六省聯考2017題解

觀察資料範圍,發現 n 非常大,但是 k 和 r 很小,容易想到矩陣乘法。原題式子的組合意義就是從 n times k 個物品選擇 i i bmod k r 個物品。考慮dp,設 f 表示從 i 個物品中選擇 s s bmod k j 個物品。由於 c c c 因此可以推出 f f f 發現所有的 ...

六省聯考2017

luogu lojbzoj 顯然我們只需要考慮最後公布成績的那一天。列舉這一天,預處理字首和之後即可 o 1 計算最小代價。注意倒數第二個subtask這最優的日期就是 min b i 直接計算即可。如果套用通法會爆long long,但是開unsigned long long就行了 include...