HDU 湫秋系列故事 安排座位 組和DP

2022-05-24 00:48:13 字數 2334 閱讀 4226

題意:中文...

思路:話說這類題目做的真的很少,比賽時無從下手。首先我們不考慮組內之間的順序問題,將其轉化為組合。dp[i][j]表示第i組插入到佇列中存在j個空,該空的左右兩邊是同一組的人,這樣我們只要將第i + 1組的人查到該空的話,就是合法的。   這裡用了一下滾動陣列優化了一下。

dp[cur][i-k+x-j] +=dp[pre][i]*c[x-1][j-1]%mod*c[i][k]%mod*c[sum-i][j-k]%mod;

pre表示前一狀態,i表示列舉的前一狀態下,存在i個滿足上述條件的空。c[x - 1][j - 1]表示將當前組的x個人分成j組,然後往i個空裡面插。 c[i][k]表示選擇分成j組裡面的k組i組裡面插,c[sum - i][j - k]表示將插完剩下的人插入到不滿足上述條件的孔裡面。 i - k + x - j表示插入完成後所形成的的狀態。

view code

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define cl(arr, val) memset(arr, val, sizeof(arr))

#define lc l,m,rt<<1

#define rc m + 1,r,rt<<1|1

#define pi acos(-1.0)

#define ll __int64

#define l(x) (x) << 1

#define r(x) (x) << 1 | 1

#define mid(l, r) (l + r) >> 1

#define min(x, y) (x) < (y) ? (x) : (y)

#define max(x, y) (x) < (y) ? (y) : (x)

#define e(x) (1 << (x))

#define iabs(x) (x) < 0 ? -(x) : (x)

#define out(x) printf("%i64d\n", x)

#define lowbit(x) (x)&(-x)

#define read() freopen("din.txt", "r", stdin)

#define write() freopen("dout.txt", "w", stdout);

#define m 307

#define n 450

using

namespace

std;

const ll mod = 1000000007

;ll a[

48];

ll dp[

2][n];

ll c[n][n];

intpre,cur,sum;

void

init()}a[

0] = 1

;

for (i = 1; i < 48; ++i)

}int

main()}}

}swap(pre,cur);

sum +=x;

jc = (jc*a[x])%mod;

}//printf("%i64d %i64d\n",dp[pre][0],jc);

ll ans = dp[pre][0]*jc%mod;

printf(

"case %d: %i64d\n

",cas++,ans);

}return0;

}

HDU4532 湫秋系列故事 安排座位

題面在這裡 有 n 種顏色的小球,每種顏色的小球有 a i 個 要把它們擺成一排,求相鄰小球顏色不相同的擺放方案數。任意兩個合理的安排方法,只要有乙個位置的同學不同,都被認為是不同的。n le 50,a i le 50,sum a i le 500 鳴謝ycb 以下先考慮可重排列的情況 考慮容斥 a...

HDU 湫秋系列故事 安排座位 組和DP

題意 中文.思路 話說這類題目做的真的很少,比賽時無從下手。首先我們不考慮組內之間的順序問題,將其轉化為組合。dp i j 表示第i組插入到佇列中存在j個空,該空的左右兩邊是同一組的人,這樣我們只要將第i 1組的人查到該空的話,就是合法的。這裡用了一下滾動陣列優化了一下。dp cur i k x j...

HDU4544 湫湫系列故事 消滅兔子

hdu 4544 tags 資料結構,貪心 analysis 將兔子的血量從大到小排序,將箭的殺傷力從大到小排序,對於每乙個兔子血量,將比他大的殺傷力大的劍壓入優先佇列,優先佇列自己重寫,讓它每次丟擲的數為價錢最小。code include include include include using...