1. 程式人生 > 其它 >2021 多校 杭電 第十場

2021 多校 杭電 第十場

好像這場完多校就結束了,然而好頹廢,題一場都沒補

比賽記錄

我做 A,第一問很好解決,列舉 \(k\),再定義只在字典序最小的方案處統計答案,列舉方案中 \(k\) 出現的位置,再乘個組合係數就行。

這時候 bzy 說 D tle了,有高論,準備等等看

第二問,一開始進行了錯誤的轉化,看到榜上沒一血,找zzs幫忙dp一個計數問題,但這個其實沒用,zzs忙著切 C,再看已經有一血了,就自己慢慢做了。然後發現對於一類合法方案,根據對稱性,剩下位置填數對 \(1\cdots k\) 的貢獻應該是一樣的,所以只要在第一問中加個 \(\frac{tmp_i}i \times n\) 就好,發現 \(p\)

不一定是質數,改利用乘的係數除掉 \(i\) 即可,中間因為 \(n=1\) 和少乘係數導致 WA 了兩發

然後 zzs C tle,丟給 bzy,去寫 H

我看到 C,感覺可以 bitset 就去寫,然後 bzy 說他在寫,我就去看 D 了。中間突然感興趣回來看 zzs 之前 TLE 的程式碼,哦是 bitset 啊,那沒我事了,然後看到群裡 bzy:“發現是n^4/w的,T 了”,zzs:“你都不看看我之前為啥 T 了嗎”。 然後我自己血了一個試圖加個 O3 卡過去,本地 0.8s 他跑不出來,好奇哪個人之前說評測機挺快的,然後看那個列舉 for j 1..i 和dp拆分數的思想一樣,這個只用前一半和 \(i\)

,就可以常數 除以 2,加上O3,就過了

期間 zzs 過了 H,然後 我搞 D,zzs 搞 F,bzy 搞 G

bzy:“G找到一篇tarjan老爺子的論文”,然後就失蹤了

我寫了半天 D 假的列舉 \(\frac{n}{i}\) 的段,希望在 \(2^{16}\) 中不多,然後跑出來按時間估計比暴力還慢,發現自己是個 sb,冷靜分析一下就知道段很多

期間 zzs 發了點 F 的轉化我還沒細想,就提出和 zzs 換著看下題

去看 F,式子著實嚇人,感覺一下子承受不了,那邊 zzs 還開始寫 D 了,就想偷偷下班了。水了下群,看了看高中那邊比賽情況,zzs就說他假了。。。然後我回來繼續搞 D

期間想了記憶化,但是看 zzs 說的複雜度太優秀了,就沒管,現在回來寫,差不多就是直接記錄 \(F(k,n)\)

,轉移就是 \(F(k,n) = F(k-1,n) - F(k-1,\frac{n}{p_k})\),在加一個把 \(n\) 降成 \(n\bmod \prod_{i=1}^k p_i\),再分別用陣列記錄 \(n\le M\) 的答案 和 map 記錄 \(> M\) 的,然後跑十幾s,然後想到可能記錄 大於 \(M\) 的答案沒用,去掉 map 發現速度起飛,提交,改掉 MLE 就過了

實在不想想 F,去讀了下 J 沒發現滿足單調性的地方,咕咕了

之後 bzy G RE了,在群裡發自己調不動了,我以為只是 RE,想隨手拿 gdb 看看咋回事然後發現他樣例都沒過,,,就提前下班了