模擬87 題解


A. maze

做過類似的題,維護最短路對於$k$的一個凸包,答案就是凸包與$y=s$直線交點的橫坐標,這個還挺難打的。

然而答案顯然具有單調性,所以直接二分答案就完了。

實際上,這個二分答案的操作,等價於選定直線$x=mid$,

求出$x=mid$與凸包的交點的縱坐標,並通過這個縱坐標與$s$比較來確定最終的$mid$即答案。

 

 

 

B. bird

將鳥的移動轉化為人的移動,則問題是相鄰$k$個位置最多打一槍。

設$dp_i$表示最后一槍在$i$處打的最優答案。

那么有轉移$dp_i=dp_j+cnt_{j,i}$,$cnt_{j,i}$表示$j$處打不到但$i$處能打到的鳥的個數。

這個東西並不難維護,

對於每一個鳥,我們只要

在$l_i$處給$dp_0$~$dp_{l-1}$加上1,

在$r_{i+1}$處給$dp_0$~$dp_{l-1}$減去1,

用線段樹進行加減操作,維護最值就完了。

 

 

 

C. stone

設$f(i,j)$表示點對$(i,j)$是否合法,只有$0/1$兩個取值。

有轉移

$a[i]=b[j]$  $f[i+1][j+1]=f[i][j]$

$a[i]!=b[j]$  $f[i+1][j]=f[i][j],f[i][j+1]=f[i][j]$

顯然對於同一個$i$,$f(i,j)$取值為$1$的區間大概是連續的,設左右端點分別為$l_i$,$r_i$。

$l$,$r$數組的求法都是簡單的。

然而$l_i,r_i$范圍內並不全為$1$,其中穿插着許多$0$。

總的答案是$l_i$,$r_i$范圍減去其中$0$的個數。

不妨先打出表來,實際上,打出的表告訴我們,結論是:答案要減去的是$b$字符串$l_i$,$r_i$范圍內,

與字符串$s=a[i-1],a[i]$逆序的子串個數,即$l_i<=j<=r_i$ $a[i]==b[j-1],a[i-1]==b[j],a[i]!=a[i+1]$的個數。

一句話,答案為:$ans=\sum \limits_{i=1}^{n}r_i-l_i+1-\sum \limits_{j=l_i}^{r_i}[a[i]==b[j-1],a[i-1]==b[j],a[i]!=a[i-1]]$

由於$l$,$r$數組都是單調不降的,加上字符集只有$A,B,C$。

可以直接用單調指針求出后一個求和式,當然前綴和也是可以的。

 

考慮表中的$0$意味着什么。

因為$a[i-1]!=b[j-1]$ $a[i-1]==b[j]$ $a[i]==b[j-1]$等價於$a$,$b$形成逆序串。

我們用逆序串的個數求出了$f$值等於$0$的點對數,所以要證明的是:(注意下面的$f[i][j]$保證$j$在$l_i,r_i$范圍內)

$f[i][j]=0$的充要條件是

1.$a[i-1]!=b[j-1]$

2.$a[i-1]==b[j]$

3.$a[i]==b[j-1]$

 

因為$f[i][j]$沒有被$f[i-1][j-1]$轉移,那么$f[i-1][j-1]==0$或$a[i-1]!=b[j-1]$。

因為$f[i][j]$沒有被$f[i-1][j]$轉移,那么$f[i-1][j]==0$或$a[i-1]==b[j]$

因為$f[i][j]$沒有被$f[i][j-1]$轉移,那么$f[i][j-1]==0$或$a[i]==b[j-1]$

因為有三個或,其充分性是顯然的。

 

下面證$f[i-1][j]=1$和$f[i][j-1]=1$,即條件2 3是必要的:

1.假設$f[i-1][j-1]=1$,那么由$f[i][j]=0$,

$f[i-1][j-1]$必定要轉移到$f[i-1][j]$和$f[i][j-1]$,所以$f[i-1][j]=f[i][j-1]=1$。

2.假設$f[i-1][j-1]=0$,由上述的證明,我們可以歸納得知$f[i-1][j-2]=1$,

由於$f[i-1][j-1]=0$,那么$f[i-1][j-2]$必定要轉移到$f[i][j-1]$,所以$f[i][j-1]=1$,同理可得$f[i-1][j]=1$。

證畢。

 

下面證條件1是必要的:

1.假設$f[i-1][j-1]=1$,那么顯然是必要的。

2.假設$f[i-1][j-1]=0$,那么在$(i-1,j-1)$,字符串$a$,$b$已經形成了逆序串,那么顯然$a[i-1]!=b[j-1]$。

 

所以上述三個條件是充要的,$(i,j)$存在逆序串等價於$f[i][j]=0$,所以我們的計算是合理的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM