BZOJ3692 愚蠢的演算法

2021-09-08 19:11:58 字數 714 閱讀 1347

兩個函式相同等價於不存在長度為$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 ...