兩個函式相同等價於不存在長度為$3$的下降子串行。
先考慮隨意填的部分,設$f[i][j]$表示考慮了$[i,n]$,下降子串行第$2$項的最小值的是這裡面第$j$個的方案數,轉移則考慮往序列裡插數字,可以通過字尾和優化到$o(n^2)$。
然後考慮已固定的部分,設$g[i][j]$表示考慮了$[i,n]$,下降子串行第$2$項的最小值是$j$的方案數,因為填法唯一,所以直接轉移即可。
時間複雜度$o(n^2)$。
#includeconst int n=2005,p=1000000007;
int n,m,i,j,k,flag,a[n],v[n],b[n],cnt,f[n][n],s[n][n],g[n][n],ans;
int main()
if(!m)
for(i=1;i<=n;i++)if(!v[i])b[++cnt]=i;
for(i=0;i<=n-m;i++)g[m+1][b[i]]=f[m+1][i];
if(m==n)g[n+1][0]=1;
for(i=m;i;i--)
for(j=1;j<=cnt;j++)if(a[i]>b[j])
for(j=0;j<=n;j++)
} for(i=0;i<=n;i++)ans=(ans+g[1][i])%p;
return printf("%d",ans),0;
}
BZOJ 1878 HH的項鍊(莫隊演算法)
description hh有一串由各種漂亮的貝殼組成的項鍊。hh相信不同的貝殼會帶來好運,所以每次散步完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題 某一段貝殼中,包含了多少種不同的貝殼?這個問題很難回答。因為項...
bzoj 3460 Jc的宿舍 莫隊演算法
一開始感覺是分塊,但是好像不太茲瓷。於是覺得是莫隊。yy了乙個做法就是每16個分成一塊,然後o 16 修改,o n 16 詢問,配合莫隊就是o 16n 1.5 n 2 16 不知道能不能過 當然不是16應該也是茲瓷的 ac 如下 include define ll long long define ...
BZOJ 2038 小Z的襪子(莫隊演算法)
莫隊演算法的話,看這個比較好懂 net bossup article details 39236275 不過這裡面的部落格的 貌似有點問題,所以 的話,net lwt36 article details 50583757 這個是對的,看我的也行。什麼時候用莫隊?1 區間不會被修改 2 可以離線 3 ...