2020 11 28 NOIP提高A組 模擬總結

2021-10-10 23:18:08 字數 2143 閱讀 9354

估分:100+100+60+50=310

實際分數:90+75+75+15=255

t1 6902. 【2020.11.28提高組模擬】t1 染色(color)

考慮到質數可以分成兩類,2和奇質數。

對於所有的奇質數,我們都可以只用1212...進行染色即可滿足條件。

但是有2存在,所以我們必選按照mod 4的方式染色,即123412341234....

對於n小於8的時候情況有所不同,直接爆搜即可。

考試時最後才發現問題,對於n=10的時候特判了一下卻沒有return 0。

t2  6903. 【2020.11.28提高組模擬】t2 序列(array)

法一:注意到答案關於minb的函式是非嚴格單峰的,因此三分minb所以應的答案

暴力判斷,貪心地能往上填滿的就填滿。

這裡注意非嚴格單峰函式可能在三分的時候出現lmid 和rmid的答案相等的情況,這個時候我們就不知道要往哪邊跳,因此解決辦法是都跳一遍!

這裡並不是說像遞迴那樣左右往下分別去處理,而是做兩次三分,第一次三分判斷相等時往左縮小指標,第二次往右縮小指標。

法二:

t3  6904. 【2020.11.28提高組模擬】t3 樹上詢問(query)

考慮將一條 l 到 r 的鏈拆成 l 到 lca 和 lca到 r 。

即 d[ x ]表示 x 節點的深度。

則從 l 到 lca 上答案就是 d[ l ]-d[ x ]=x 的x 的個數,也就是d[ l ]= d[ x ]+x。

已知d[ l ]為定值,則運用樹上差分的思想,可以將 root 到 l 路徑上的答案減去 root 到 lca的答案得到。

那麼離線在樹上dfs的時候用桶記錄一下即可。

對於 lca 到 r 上的答案是 d[ r ]-d[ y ]= len- y 的y的個數,也就是 d[ r ]-len = d[ y ]-y。

同樣將詢問離線將 根 到 r 的減去 根 到 lca 的答案即可。

考場時打了暴力,沒有想出來鏈的情況怎麼處理。

t4  6905. 【2020.11.28提高組模擬】t4 網路(network)

大膽猜想答案一定是yes。

看到先順著推一遍。

經過乙個導線(x,y)後,如果之前的分組為 (x) , (y,z),則調整為 (x,y) , (z),如果是 (x,u) , (y,v) 則調整為 (x,y) , (u,v) 考慮所有情況容易發現這樣並不會出錯。

構造只需要反推即可。

先在所有組中任意選擇一條導線有電流,另一條一定沒有電流(這裡同一組中可能是通過他們之間有導線而調整得來,也有可能是從來沒有調整過,但都不影響我們令它們中只能有一根導線有電)

分兩種情況討論:

1.  對於當前一條從後往前的導線 (x,y),調整之後為(x,y) , (z) ,調整之前的可以記錄下來 (x,z) ,(y) 或 (y,z) ,(x) ,其中通電情況有2種 ,其中z是一定有電的,x沒電y有電或y沒有x有電

此時找出調整前自己乙個集合的是x還是y,即為now(此時now一定有電)

a.如果調整前now為x且調整後 x 沒有電   或者  調整前now為y且調整後y任然有電  ,都說明x的電輸給了y。答案為1。

b.否則答案為0。

2. 對於當前一條從後往前的導線 (x,y),調整之後為(x,y) , (u,v) ,調整之前的有兩種情況(x,u),(y,v)或(x,v),(y,u) 其中通電情況有4種,其中 u和v的通電情況不變,x和y可能改變, 每一組中只能有一根導線有電。

a.如果調整後y有電,則答案為1。

b.否則答案為0。

注意每列舉完一根導線要更新它們的通電情況,才能繼續往前更新。

注意檢查:

是否return 0。

三分時的函式是否嚴格單峰。不嚴格需要細節性處理。

NOIP提高 通訊

tarjan縮點 互相到達的兩個點,就是在同乙個強連通分量裡面的點的邊權都沒有用了。那麼明顯可以用tarjan來縮點。需要串上n個點 那麼這個東西很像乙個最小生成樹,可惜不是。那麼我們另闢蹊徑。既然要保證每個點都在的出的圖中,那麼最優的方案就只有n 1條邊,那麼每個除了1號點只需要有一條邊練過來就好...

NOIP提高 錢倉

比賽的時候看錯題目了,還以為是這個錢可以向兩邊流,結果,樣例怎麼不對啊!原來錢,只能向後流tat 貪心 那麼直接貪心就好了。每個錢為0的點,因為是單方向流動的,所以肯定是最近的那個點流過來的。所以先找出乙個合法的初始節點,滿足每個零都會被前面的點填滿。維護每乙個非零的點的左邊乙個非零的點,其實每次暴...

NOIP提高組 矩陣

在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...