場外模擬 省選聯考(A卷重考) 2020 遊記

博客園同步

前記

上次 AA155155BB360360 ;一個退役,一個進隊。

所以說很不爽,來把 AA 卷的題再看一遍。

冰火戰士

上次只看了 1010 分的暴力,認真了才發現答案是 2×min{ice,fire}2 \times \min \{ ice,fire \},隨便弄個數據結構二分維護就可以搞到 O(nlog2n)\mathcal{O}(n \log^2 n) 的好成績,這樣 6060.

2×1062 \times 10^6 的話,這個複雜度要達到 9×1089 \times 10^8,少爺機不一定 3s3s 能跑完吧。

6060 分就行吧。

組合數問題

想來想去 4040 還是上不去,那就怎麼地了。

魔法商店

黑啊,心裏慌。

題意看完就覺得迷迷糊糊地,算法想不起來,數據結構也套不上去。

上次部分分沒細看,這次要認真。

直接去部分分吧!

首先 15%15 \%n10,m4,1vi5n \leq 10 ,m \leq 4 ,1 \leq v_i \leq 5 瞎爆搜唄!

當然我們可以考慮的是 搜索,把 [0,10][0,10] 的狀態大力搜一遍,然後記憶化記錄答案的優劣。這樣時間複雜度應該是 1010×410^{10} \times 4 的,但是人都知道不會跑滿,穩了 1515 分。

n50,m2,1vi10n \leq 50 , m \leq 2 ,1 \leq v_i \leq 10 就說明只有 22 個滿足的要求,那樣只要滿足 最多 44 個數其中 x xor y0x \space \text{xor} \space y \not = 0 , u xor v0u \space \text{xor} \space v \not = 0 即可,只需要修改 44 個數。

那不慌!大力枚舉 (10×2)4(10 \times 2)^4 可以過掉的。這樣就有了 3030 分。

下面考慮 n50,m30,0vi1n \leq 50 , m \leq 30 , 0 \leq v_i \leq 1.

此時 若干個數異或 0\not = 0 的條件就變成了若干個數中 11 的個數和 00 的個數差爲奇數。這樣我們可以考慮把兩個條件的重複部分暴力修改,其餘部分直接統計。這樣可以有了 5050 分。

A=BA = B 說明只有一個合法條件,此時 viv_i 值域較大,萎掉。

所以 5050 分啦!

信號傳遞

Day1\text{Day1} 有了 150150,很不慌。

既然 3030 分暴力不滿足,那就來考慮狀壓。用 ee 來記錄兩兩傳遞次數。(開 vector\text{vector} 不慌啊)

只有 2m2^m 個狀態,滾一個 fSf_S 來進行 dp\text{dp},對 xSx \in Sxx 進行更新 ff.

粗略一算,哈,枚舉是 O(m)\mathcal{O}(m) 的,轉移又要一重,那麼就是 O(2mm2)\mathcal{O}(2^m m^2).

這東西只有 6060 分,常數一點也卡不進去。

空間是 O(2m)\mathcal{O}(2^m) 沒事,時間不行了,那這麼地吧,6060 就走了吧。

Day2\text{Day2} 全是紫題,拿到 210210 仍然很慌。

直接搞一個數據結構,那麼要支持的是:

  • 插入,合併
  • 全局 +1+1 操作
  • 全局異或和

Trie\text{Trie} 可以解決第一個和第三個,但是全局 +1+1 顯然 Trie\text{Trie} 搞不了。

那麼一個二進制 +1+1 實際上是把 它最低位的 00 變成 11,該位以後所有的 11 變成 00,怎麼維護呢?首先 Trie\text{Trie} 的樹高是 log\log 的,暴力也可以,常數小一點的話可以直接從低到高的交換。

這樣 O(nlogn)\mathcal{O}(n \log n) 就過了?

對,沒錯!我切紫題了?jk/ jk/

作業題

至少 310310 穩住了!

反演好累啊,直接 3030 暴力帶走吧。

總結

雖然口頭 340340 進了 EE 隊,但是很多暴力 / 正解需要調試的時間,考場真正能寫出來還需要時間的磨練。不過加油!

今番良晤,豪興不淺,他日江湖相逢,再當杯酒言歡。咱們就此別過。江湖路遠,各位請一路珍重。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章