NOIP2016題目簡析

2022-06-02 10:27:07 字數 1933 閱讀 1126

t1:玩具謎題

直接模擬即可,對於每次操作直接計算出下一位置,時間複雜度o(m)。

t2:天天愛跑步

乙個簡單的做法:你可以預處理計算出所有si和ti的lca,然後對於每個觀察員,判斷它是否在si到ti的道路上,如果是計算出到達它的時間,如果與其觀察時間相符,則其能觀察人數+1。但時間複雜度o(nm)要t。

我們把s到t的路徑分成兩段:s到lca,lca到t。

先考慮s到lca的那段路:

如果處於x位置的觀察員能夠觀察到此人,需滿足條件:dis[s]-dis[x]=w-->dis[s]=dis[x]+w

你可以開乙個桶來快速統計:一旦遇到乙個s點,那麼把dis[s]所在位置+1,然後統計x點時,由於x點可以統計的範圍僅限於它的所有子樹(包括它自己),所以你可以把dfs所有子樹之後的dis[x]+w位置的值與dfs之前的dis[x]+w位置的值求差來快速得到x點經過的人數。

遇到lca的時候,你要把對應的s的dis[s]所在位置-1。

再考慮lca到t的那段路:

如果處於x位置的觀察員能夠觀察到此人,需滿足條件:len(s,t)-(dis[t]-dis[x])=w-->dis[x]-w=dis[t]-len(s,t)

你可以類似上述進行開乙個桶進行統計,但是需要注意,這裡可能出現負數,需要將其轉化為正數。

還有一點需要注意的,就是lca這個點可能會被重複計算,最後需要減去。

這樣統計的總複雜度為線性的,就可以ac了。

t3:換教室

首先你肯定需要預處理出教室之間的兩兩距離。v≤300,考慮floyd計算最短路。

然後考慮概率dp:

用dp[i][j][0]表示第i個時間段申請了j次,當天沒申請的期望。

用dp[i][j][1]表示第i個時間段申請了j次,當天申請了的期望。

方程如下:

dp[i][j][0]=min

dp[i][j][1]=min

初值:dp[1][0][0]=dp[1][1][1]=0

最終ans=min

t1:組合數問題

由於k的值是固定的,你可以先花o(2000^2)的複雜度進行預處理,計算出每個c(n,m)。

但是這樣對於詢問是不起幫助的,由於題目要求0 <= i <= n,0 <= j <= min(i,m),所以你很快想到字首和,這樣詢問就變成o(1)的了。

t2:蚯蚓

最簡單樸素的想法:記錄下所有蚯蚓的長度,每次找最大值。

每次找最大值可以用堆維護,但是m高達7*10^6,會t。

所以你不得不尋找更優的演算法。

可以發現這樣乙個事實:後切斷的蚯蚓長度一定小於先切斷的蚯蚓的兩段的長度之和==後切段的蚯蚓的兩段長度一定分別小於先切斷的蚯蚓的兩段長度。

理由很簡單:本來就比你短,後來每次只增長q,而你每次增長2q,肯定一直比你短。

那麼也就是說你可以開三個佇列進行維護:第乙個佇列存排好序後的原序列,第二個佇列存切成兩段後的第一段的序列,第三個佇列存切成兩段後的第二段的序列,每次的最大值就是三個序列隊頭元素的最大值,令該元素出隊,然後把新的元素直接加入第

二、三個序列的末尾即可。

小轉化:其它蚯蚓全部增長q==被切斷的蚯蚓的兩段長度分別減少q,這樣減少了運算次數,需要使用原值時可以用數值+i*q來得到原長。

這樣你可以得到乙個線性複雜度的做法,就可以a掉此題。

t3:憤怒的小鳥

n≤18-->狀壓dp。

樸素的轉移:由於一般情況下,一次可以至少打兩隻豬(特殊情況除外,例如兩鳥的x值相同等),所以你對於每個狀態,窮舉打哪兩隻豬,然後在o(n)橫掃,還可以打掉哪些豬,然後轉移到新狀態,時間複雜度o(2^n * n^3)=t

實際上你可以先o(n^3)預處理出打兩隻豬時還可以打掉哪些豬(存成乙個狀態),到時候對於每個狀態,窮舉打哪兩隻豬,然後直接|運算即可得到新狀態。注意:不要忘了窮舉只打乙隻豬的情況。時間複雜度o(2^n * n^2)。

由於有很多情況和狀態是不需要轉移的,所以這個複雜度是可以a掉此題的。

NOIP2011題目簡析

t1 鋪地毯 由於後面鋪的地毯會覆蓋前面的地毯,所以對於詢問,你可以倒往上搜,一旦發現一張地毯能覆蓋該點,輸出其編號然後break。如果沒有一張地毯能覆蓋該點就輸出 1。t2 選擇客棧 條件是兩個 假設選擇x,y兩個客棧 1 color x color y 2 min p 首先你可以把客棧按照不同顏...

NOIP2013題目簡析

t1 轉圈遊戲 可以發現答案為 x m 10 k n。瓶頸在於k最大10 9,用快速冪輕鬆解決。t2 火柴排隊 容易發現,當最小的ai對應最小的bi,第二小的ai對應第二小的bi,時兩列火柴之間距離最小。然後你發現可以乙個序列不動,只移動另乙個序列 兩個序列都移動的最少步數是一樣的 然後你發現ai的...

NOIP2016普及組初賽題目整理

郊遊活動 有 n 名同學參加學校組織的郊遊活動,已知學校給這 n 名同學的郊遊總經費為 a 元,與此同時第 i 位同學自己攜帶了 mi 元。為了方便郊遊,活動地點提供 b n 輛自行車供人租用,租用第 j 輛自行車的 為 cj元,每位同學可以使用自己攜帶的錢或者學校的郊遊經費,為了方便賬務管理,每位...