北大集訓 CTT 2021 部分題解

2022-10-09 05:15:09 字數 4407 閱讀 2490

忘報名北大集訓,還是能看到題,省了 8000 塊錢,贏麻了。

鴿表示沒**,may be 無正解思路。

鴿。\(k = 2\) 的做法:考慮分治,取中間點,處理所有跨過中點的,連上左右兩邊所有到這裡的邊,遞迴下去,是 \(o(n \log n)\) ,但是有很多重複,恰好卡進。

\(k = 3\) 的做法,取若干關鍵點分成若干塊,開頭結尾兩塊只用連字尾 / 字首邊,中間每塊連前字尾,並且中間關鍵點兩兩連邊,用 dp 算出最優的分塊位置。

\(k > 3\),考慮擴充套件,可能可以分成 \(k - 2\) 部分,每部分兩兩連邊啥的。

令怪物總數、詢問數量是 \(o(n)\) 量級,\(g, l, d\) 值域是 \(v\)。

順序如果確定,打怪物看成 \(-a, b\),答案就是 $- $ 字首 \(\min\)。

首先過程可以貪心描述,先打能回血的,回血裡按 \(a\) 從小到大打,之後每次血量都會變小,一定按 \(b\) 從大到小打(考慮微繞 \(\min(-a_1, -a_+b_1-a_2) \ge \min(-a_2,-a_2+b_2-a_1)\),兩個括號左邊不可能作為全域性最小值,即 \(b_1 \ge b_2\),答案不會更劣)

於是問題變成了四維偏序空間內,按一定順序排好的字首 \(\min\)。(可以理解為有 \(5\) 個維度?

每次暴力是 \(o(qn)\),有 \(10\) 分。

\(>3\) 維偏序,\(\log\) 類分治資料結構不如根號,根號不如 bitset。

但這個還得按特殊順序排序,考慮每 \(b\) 塊預處理,我們只會每塊 \(o(2^b)\) 的複雜度預處理,所以預處理總複雜度 \(o(\frac2^b)\)。

查詢的時候,把每一維的 bitset 整出來 and,然後在預處理的東西裡查詢即可,複雜度 \(o(\frac)\)

取 \(b = \log n\) 最優,複雜度為 \(o(\frac)\)。

感覺蠢爆了。但是在這個資料複雜度確實很優越。。。

為了規避巨大空間,可以按塊處理,這樣空間就是線性了。

code

咋會還有這種題。

記 \(pre_i\) 是 \(i\) 同顏色前驅。

選擇的 \(x, y\) 需滿足,\(a_y\) 在 \([r + 1, n]\) 中唯一,\(a_x\) 在 \([1, y]\) 中唯一,\(x \ge pre_y\)。

按 \(y\) 從小往大,維護出現一次的 \(x\) 的集合,取最大的元素看一下就行。

\(o(n \log n)\)

code

全域性操作,考慮記個 \(tag\) 表示進行了幾次操作 \(2\)。

那麼每個值設為 \(a_i + tag \times i\)。那麼每次 \(1\) 相當於全域性對 \(v - tag \times i\) 這個等差數列進行 \(\text\)。

如果一開始 \(a\) 無窮大是好做的,每次改變的是乙個字尾,維護乙個棧算一下覆蓋的字尾是哪些,區間覆蓋等差數列就好了。

考慮算一下每個 \(i\),\(a_i\) 什麼時候第一次被 \(\text\),之後的過程就是類似上面的,相當於維護乙個 \(01\) 序列,支援維護 \(1\) 的那些點的和,覆蓋等差數列,以及單點 \(0\) 變 \(1\)。

找到第一次,可以整體二分 + 李超樹 \(o(n \log ^2n)\),瓶頸也是這裡。

code

此題可以做到兩次,深感恐懼,還沒讀代老師**。

垃圾做法:

\(8200\) 次:從高到低確定每位,考慮每次問兩個一樣的串,只有第 \(i\) 位是 \(1\),那麼他會進製到後面的一段 \(1\),期中滿足最後乙個 \(1\) 位置和他同號,中間那些和他異號。

考慮並行這個過程,但是如果低位擴充套件太長影響高位就寄了,,

考慮分塊,把 \(8200\) 分成 \(90\) 塊,每塊從開頭開始擴充套件,發現每次要麼都擴充套件了至少 \(1\),要麼有一塊跨越段爆了,複雜度貌似可以保障,從小到大找到最小的跨越一段的塊,前面的往右邊跳,這個塊跨完了,分析一下上界是 \(2\sqrt = 180\) 的,卡點通過,又慢又拉。

code

首先肯定只有 \(x \rightarrow 1\) 這樣的邊讓他回去更快。

然後打表發現是這麼放的(令 \(x\) 表示連 \(x \rightarrow 1\) 的邊):

設 \(c_i\) 表示 \(i\) 到 \(1\) 連的邊數。\(c\) 顏色相同連續段最多 \(3\) 段。

同時自然列出 \(o(n)\) dp,發現可以矩陣快速冪優化 發現 \(c\) 相同一段其實就是等比數列求和。

\(o(t \log n)\)

code

詐騙。考慮什麼時刻是合法的,發現是未點亮的聯通塊是一 \(\rightarrow\) 當前兩頭都未點亮邊數是 $n - 1 - $ 當前操作次數。

有根樹居然推出無根限制,真神秘。。。限制每條邊獨立。

同時如果合法的,目前貢獻相當於一頭點亮一頭未點亮個數。

所以合法位置個數可以轉化為區間加,求 \(0\) 的個數,同時求 \(0\) 的位置那些貢獻和,還得區間加貢獻 ,線段樹維護最小值 \(\&\) 最小值次數,同時維護最小值對應的貢獻值之和即可。

樹真恐怖。

\(o((n + m) \log n)\)。

code

個人理解,區間長度不會太長。

果不其然,\(2000\) 足以。

掃瞄線,\(o(1)\) 改,\(o(\sqrt)\) 區間 \(\min\)。

喜提最劣解。

\(o(m \sqrt )\)

code

鴿。應該是任意一種情況,對應係數成比例。

設長度是 \(n\)。

那麼對應關係是 \(b^i \leftrightarrow (-1)^\rfloor} b^\rfloor - \lfloor\frac\rfloor\ +\ i\ \bmod\ k}\)

代入 \(i = 0\) 發現這個比例是 後者是前者的 \(b^\rfloor}\) 倍。

\[b^i = (-1)^\rfloor} b^\rfloor\ +\ i\ \bmod\ k}

\]\[b^\rfloor\times(k+1)} = (-1)^\rfloor}

\]這個 \(i\) 是隨便取的,那麼就得有 \(b^ = -1\)。

就大概就是半階 \(-1\)。

根據一些數論知識,\(b, p\) 不互質沒有階,沒有階沒有半階。

半階的奇數倍也都是 \(-1\)。

階的所有倍都是 \(1\)。

考慮半階若存在只能是階 \(/2\),如果不是,會發現階會變的更小,矛盾。

這樣只用找階,分解素因數後,可以有每次 \(\log\) 做法。

考慮分解 \(\phi(p)\) 質因數,每次考慮乙個質因子至少需要幾個,剩下的都湊足了,重複直到是 \(1\) 即可,每個質因子獨立。

有些情況要特判 \(p = 2\),半階為 \(1\) 時答案是 \(2\)。

複雜度 \(o(\sqrt + t \ \times \log p)\)

code

注意每次操作有後效性。。。

沒有特殊條件的基礎遊戲,每個棋子 \(sg\) 函式就是子樹 \(mex\),就是子樹高度。

加上特殊條件,如果根確定,當前狀態就是 \(a\) 奇數字置的高度的 \(xor\),k 想贏,必須選乙個 sg 函式恰好是當前狀態的把異或為 \(0\),而又他能選的是一段區間滿足 \(\le\) 最大高度。

定義 \(w_x\) 為距離 \(x\) 最遠的距離。

轉化完題意就是乙個點是好的當且僅當以它為根 \(1\) 的位置的高度的 \(xor\) 大於 \(w_x\)。

直接求 \(o(nm)\) 可以 \(45\)。。

就是問乙個臨域有多少好的。

可以發現若干根號平衡方法,但是在樹上,通常有鏈剖分的形式來轉化為 \(\log\)。

考慮乙個點的影響,相當於最多對 dfn 的三個區間 xor 相同的數。

考慮長鏈剖分,相當於每次修改,子樹外部分,長兒子,輕兒子們 xor 的數各自一樣。

那麼就簡單的做到了 \(o(\log)\) 改、查單點。這樣能得 69 分,11 那個過了感覺是資料太水。

考慮單獨維護每個點輕兒子的答案,剩下的暴力查。

發現幾乎全部點,他們輕兒子也都是整體 xor 乙個樹,除了 \(x\) 如果是自己父親的輕兒子,那可能只用改 \(x\) 在清父親中的影響。

那麼我們考慮這樣乙個資料結構,初始有兩個序列 \(a_, b_\),每次 \(a\) 整體異或 \(k\),求有多少個 \(i\) 有 $a_i > b_i $。

這題其實限制更緊,\(b_i\) 都一樣,不過我沒發現。。。

記錄當前異或的總量 \(k\),發現對於乙個 \(i\),有貢獻的 \(k\) 可以拆成 trie 樹上 \(\log\) 個子樹,那麼插入的時候把這些子樹加,查詢單點查走到底加起來就行。

複雜度 \(\log\)。

總複雜度 \(o((n + m) \log n)\)。

code

可能需要類 / 萬歐?我好菜,不會。

2020北大集訓題解

能聽懂的就盡力寫吧。肯定是都咕了。再次感謝出題人不殺之恩,給了我 89 分這個鬼畜分數。做法 不是寫法 和正解完全一樣,然而還是不知道自己怎麼錯了。心情好了再去看 這題不僅被甩了 11 分還花了 3h 真就聯賽模擬題啊 jk 獲得成就 上台講題。先考慮乙個區間怎麼做。對於每個位置直接處理出 pre ...

北大集訓2019遊記

去中關新園報到,見到了zyy,cf,lbt等各路神犇。去北大機房試機,感覺北大的機子比noi的機子好用多了。發現來北京,我需要適應熱帶沙漠氣候和溫帶季風氣候的快速轉換,有點難受。上午去考試。先讀一遍題面,感覺t1應該是比較好像但是特別繁瑣的題,t3是很難的題,t2不知道。仔細地想了想每道題,發現t2...

北大集訓2018墊底記

報道日,住的離學校挺近的,但感覺附近超市有點遠啊。下午打了場試機賽,又墊底了。試機題好可怕啊,乙個題答乙個互動,感覺自己退役穩了,不過本來就是來墊底的,也沒啥好怕的了。晚上去農園吃,感覺還行,就是沒湯有些gg 夜裡暖氣調太高了於是打低了幾度,早上起來有點冷。上午打了場day1,又墊底了。機房暖氣好足...