日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

守列划分问题(圆排列+排列dp+结论)

發(fā)布時間:2023/12/3 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 守列划分问题(圆排列+排列dp+结论) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

problem

將正整數(shù) 1~n1\sim n1n 任意劃分成 mmm 個非空集合 A1,...,AmA_1,...,A_mA1?,...,Am?

一個劃分是守序的,當且僅當存在一個環(huán)排列 (p1,...,pm)(p_1,...,p_m)(p1?,...,pm?),使得 max?Api>min?Api?1\max A_{p_i}>\min A_{p_{i-1}}maxApi??>minApi?1??p0=pmp_0=p_mp0?=pm?

兩個劃分本質不同,當且僅當存在兩個數(shù)在一個劃分中屬于同一個集合,而在另一個劃分成屬于不同集合。

求本質不同的守序劃分方案數(shù),對 998244353 取模。

n,m≤500n,m\le 500n,m500

solution

守序的判定可以轉化為:不存在一個 iii,使得 1~i1\sim i1i 各自隸屬集合的集合 S?S\bigcapS? i+1~ni+1\sim ni+1n 各自隸屬集合的集合 T=?T=\emptyT=?

簡單證明一下:不管圓排列是怎樣的,TTT 里面的集合最小值最大值都是 ≥i+1\ge i+1i+1,而 SSS 里面的集合最小值最大值都是 ≤i\le ii 的,而圓排列至少會讓一個屬于 SSS 的集合在一個屬于 TTT 的集合后一個位置,那么這個時候一定無法滿足條件。

f(i,j,k):f(i,j,k):f(i,j,k): 考慮前 iii 個數(shù),一共劃分成了 jjj 個集合,其中有 kkk 個集合還未封閉。區(qū)間封閉代表這已經生成了一個集合,之后不會再加數(shù)了。

則除了 i=ni=ni=n 時,其余時候是不能 k=0k=0k=0 的。考慮轉移到 f(i,j,k)f(i,j,k)f(i,j,k) 的幾種情況。

  • 新增一個封閉區(qū)間。f(i?1,j?1,k)f(i-1,j-1,k)f(i?1,j?1,k)
  • 新增一個未封閉區(qū)間。f(i?1,j?1,k?1)f(i-1,j-1,k-1)f(i?1,j?1,k?1)
  • 隨便加入一個未封閉區(qū)間后仍處于未封閉狀態(tài)。f(i?1,j,k)×kf(i-1,j,k)\times kf(i?1,j,k)×k
  • 隨便加入一個未封閉區(qū)間后使之封閉。f(i?1,j,k+1)×(k+1)f(i-1,j,k+1)\times (k+1)f(i?1,j,k+1)×(k+1)

code

#include <bits/stdc++.h> using namespace std; #define mod 998244353 #define maxn 505 int dp[maxn][maxn][maxn]; int n, m;signed main() {scanf( "%d %d", &n, &m );dp[0][0][0] = 1;for( int i = 1;i <= n;i ++ )for( int j = 1;j <= m;j ++ )for( int k = ( i != n );k <= j;k ++ ) //在n之前是不能讓集合出現(xiàn)全都封閉的情況dp[i][j][k] = ( 1ll * dp[i - 1][j - 1][k] + 1ll * dp[i - 1][j - 1][max( 0, k - 1 )] + 1ll * dp[i - 1][j][k + 1] * ( k + 1 ) + 1ll * dp[i - 1][j][k] * k ) % mod;//新開一個封閉集合 / 自己單獨為一個集合//新開一個不封閉的集合等待后續(xù)的加入//隨便加入一個不封閉的集合使之封閉//隨便加入一個不封閉的集合等待后續(xù)加入printf( "%d\n", dp[n][m][0] );return 0; }

總結

以上是生活随笔為你收集整理的守列划分问题(圆排列+排列dp+结论)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。