09-02 NOIP模擬測試35

指望得分:80+100+0數組

實際得分:70+80+0網絡

rk:18ui

 

A. 公園

T1連續爆炸篇排序

第一眼拓撲,發現要存狀態,定義了個dp,腦子糊了不知道怎麼處理多起點多終點,以爲十分不可作。而後發現能夠記憶化,然而不會打。class

因而盯了40分鐘,想了各類亂七八糟的東西,卡T1慌得一批。爲了緩和下,滾去T2。變量

打完T2回來仍是沒什麼可A的複雜度,而後打了個O(mv^2)每一個起點拓撲跑了。查詢

正解:建虛點S,T時間

S向入口連邊,權值爲排隊時間,出口相似。而後就只須要跑一遍拓撲。O(v^2)header

定義dp[i][j]爲到i點的鏈長爲j的最短期,拓撲更新便可。mv

以上實際上是網絡流建圖的經常使用套路,然而考試大腦短路。

 

B. 計劃

簡化:給定序列ai,q個[k,l]的詢問,回答[k,l]中全部知足區間中不一樣數的個數>=m的子區間[i,j]的j-i之和。

第一眼莫隊,發現區間能夠轉移,[l,r]->[l,r+1]的答案增量爲以r+1爲右端點的全部知足>=m限制且左端點座標>=l的等差數列之和。

性質:

  • 若是[l,r]中有>=m個不一樣的數,那麼[l-1,r],[l,r+1]一樣知足
  • [l,r]->[x,r+1],x必定>=l,換言之在右端點遞增時左端點單調不降

定義pre[i]表示以i爲右端點,最大的知足限制的左端點。

suf[i]表示以i爲左端點,最小的知足限制的右端點。

那麼[l,r]->[l,r+1],能造成貢獻的左端點範圍爲[l,pre[r]],等差數列求和便可。

複雜度$\Theta(n+q \sqrt{n})$

然而乘法運算沒ll,WA80,跟O(qn)暴力一個分。。。

 

正解:

拆式子,維護變量。

對於全部詢問[l,r]按r排序,而後把r的合法答案放到pre[r]上,用樹狀數組維護,回答查詢>=k處的和。

 

C. 抽卡

不會

相關文章
相關標籤/搜索