THUWC2019 遊記

DAY1

  開場先看 t1,發現答案的分子就是 \(\sum_i\) 顏色 \(i\) 在 A 中的出現次數乘上顏色 \(i\) 在 B 中的出現次數,分母就是 B 的長度,就去寫了一個按顏色的出現次數分類的東西,複雜度爲 \(O(n\sqrt q+q\sqrt n)\),交上去直接 pp 了。數組

  而後去看 t2,感受是個分類討論題,想了一下感受第一問仍是很可作的,就去寫第一問了。優化

  過了一會發現 A 題空間是 \(O(q\sqrt n)\) 的,就去改爲了 \(O(n\sqrt n)\) 的。spa

  而後就去把 t2 的第一問寫完了。指針

  接着就去作 t3 了,先把暴力寫了,而後看了一下提示,說是要容斥。想了一會並無想到怎麼容斥。code

  被打爆了。排序

  pt 分:\(100+60+10=170\)遊戲

  出來後歐穩歐、zjt 都說 t3 是傻逼題。圖片

  晚上鴿了開幕式去睡覺了。文檔

DAY2

  先看了 t1,感受能夠點分。過了一會發現直接線段樹合併就行了(固然也能夠離線樹狀數組),花了半個小時寫了一下交上去就 pp 了。圖像處理

  t2 看到 feature2 能夠把重心求出來就去想點分了。怎麼想都只會 \(O(n\log^2n)\) 的垃圾作法。寫完後交上去直接過了除了 \(lim1=3999,lim2=3997\) 的點。而後構造了幾組數據卡了卡常,就沒管了。

  t3 我好像以前看過相似的題,想了一下,直接對凸包的最後一條邊DP是 \(O(n^4)\) 的,按極角排一下序就 \(O(n^3)\) 了。因而就花了半個多小時寫完了。感受仍是挺好寫的。

  而後回來看 t2,發現仍是不會。

  被打爆了。

  pt 分:\(100+79+100\)

  出來後 zjt 又說 t2 是傻逼題,只要沒去想點分治,一層層作就 win 了。

DAY2+

  8 個圖像處理題。

  1. 計算一個序列的 ADLER32 校驗碼(20分)
  2. 計算一個序列的 CRC32 校驗碼(30分)
  3. 讀取簡單 PNG 圖片(50分)
  4. 寫入簡單 PNG 圖片(50分)
  5. sobel 算子 邊緣檢測(20分)
  6. halton 序列 隨機採樣(20分)
  7. 基於像素的紋理合成(30分)
  8. 基於塊的紋理合成(80分)

  開場翻了一下手冊,感受要從前日後作。

  先花了半個多小時把前兩個點寫了,而後花了一個半小時搞中間兩個點,最後剩下一點時間把第五個點寫了。

  感受前面幾個點都沒什麼技術難度,把文檔讀完而後對着文檔寫就行了。

  讀文檔必定要仔細,有幾個同窗就由於讀漏了某些條件被坑了。

  感受正常人都不太能寫得完。。。我只寫了前面五個點。神仙 zjt 寫完了前面七個點。

DAY3

  上午在報告廳聽講評,順便和神O、神J、麥老大、老K聊天。講題人說兩天的 t3 都只有個位數的人過。

  下午聽學長們介紹算協、科協,聽 LazyJazz 講提早上學、光線追蹤、寫遊戲,還有清華老師吹水。而後就發協議獎狀了。

  今年由於某些緣由,不能直接發協議,只能先發獎狀。

題解

DAY1

A

  顯然答案的分子就是 \(\sum_i\) 顏色 \(i\) 在 A 中的出現次數乘上顏色 \(i\) 在 B 中的出現次數,分母就是 B 的長度。

  把詢問拆成四個前綴的詢問,而後直接莫隊就行了。

  塊大小設爲 \(O(\frac{n}{\sqrt q})\),複雜度爲 \(O(n\sqrt q+q\log q)\)

B

  大力分類討論。

C

  先把第一次 \(A=B\) 就中止變成要求 \(m\) 次操做後 \(A=B\)

  記 \(f(i)\) 爲第 \(i\) 次操做後 \(A=B\) 且前面都不知足要求的方案數,\(g(i)\) 爲第 \(i\) 次操做後 \(A=B\) 的方案數,\(w\)\(A=B\) 以後每次操做可選的方案數,就有 \(f(i)=g(i)-wg(i-1)\),求一下和就有 \(\sum_{i=1}^m f(i)=\sum_{i=1}^m g(i)-\sum_{i=0}^{m-1}wg(i)\)

  而後容斥,枚舉最終有多少個 \(i\) 不知足 \(a_i=b_i\),而後就是要求:某些點 \(a_i\geq b_i\),某些點 \(a_i>b_i\) 的方案數。

  對於每個 \(b_i\) 的值分別DP。

  每一層記 \(h_{i,j}\) 爲考慮了前 \(i\) 個位置,不合法的區間個數爲 \(j\) 的方案數(乘上容斥係數)。由於合法區間個數是 \(O(n^3)\) 的,不合法的區間個數只有 \(O(n^2)\)。轉移的時候枚舉下一個位置是選 \(b_i\) 仍是選 \(b_i+1\),直接多項式乘法便可。

  時間複雜度:\(O(n^4)\)

DAY2

A

  對於每一條邊 \(i\),計算子樹內有多少個點 \(j\) 知足 \(a_i+c_j\leq b_i+d_j\) 以及 \(c_j\)\(d_j\) 的和。子樹外同理。

  而後隨便搞搞就行了。

B

  先用 \(n-1\)feature1 算出每一個點的深度,而後對於每一個點求它的父親是上一層的那個點,每一個點求父親能夠用一次 feature2\(O(\log n)\)feature1 操做完成(要注意到詢問的集合是可重集)。

C

  \(\overline{x}=\frac{\sum x}{m},\sigma^2=\frac{x^2}{m}-{(\frac{\sum x}{m})}^2\)。這樣就只用計算方案數、面積和、面積的平方和了。

  DP出下凸殼的兩個端點爲 \(i,j\) 的方案數:記 \(f_{i,j,k}\) 是左端點爲 \(i\),最後兩個點爲 \(j\)\(k\) 的信息。轉移時枚舉下一個點 \(l\),判斷是否可行,轉移到 \(f_{i,k,l}\)。按極角排序一下而後用雙指針掃一下能夠優化到 \(O(n^3)\)

  而後把兩個凸殼拼在一塊兒就行了。

DAY2+

  對着文檔碼碼碼就行了。

相關文章
相關標籤/搜索