HDU 6415 Rikka with Nash Equilibrium (DP)
要求在n*m矩陣中填入1-n*m,使得存在且僅存在1個位置,這個位置的數在所在的行與列都是最大值。問有多少種方案。
易知這個位置上必然是n*m。為了滿足有且僅有一個點符合條件,我們從n*m倒著往矩陣裡面放,顯然每個數都應該放在已經存在數的行或列上。
考慮用i個數已經在j行k列上放置了數字,在放第i+1個數之後只可能覆蓋j行k列、j+1行k列、j行k+1列。這樣分別有j*k-i、k*(n-j)、(m-k)*j種方法。依此進行狀態轉移,答案即為dp[n*m][n][m]。
第一次驚險的卡到了4882ms……後面優化到了3307ms
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 82;
const int INF = 0x3f3f3f3f;
int t, n, m;
ll mod, dp[maxn*maxn][maxn][maxn];
int main()
{
scanf("%d", &t);
while(t--)
{
scanf("%d%d%lld", &n, &m, &mod);
memset(dp, 0, sizeof(dp));
dp[1][1][1] = n*m;
for(int i = 1;i < n*m;i++)
{
for(int j = 1;j <= n;j++)
{
if(i < j) break;
for(int k = 1;k <= m;k++)
{
if(i < k) break;
if(!dp[i][j][k]) continue;
if(k < m)
dp[i+1][j][k+1] = (dp[i+1][j][k+1] + dp[i][j][k]*j*(m - k)) % mod;
if(j < n)
dp[i+1][j+1][k] = (dp[i+1][j+1][k] + dp[i][j][k]*(n - j)*k) % mod;
if(i < j*k)
dp[i+1][j][k] = (dp[i+1][j][k] + dp[i][j][k]*(j*k - i)) % mod;
}
}
}
printf("%lld\n", dp[n*m][n][m]);
}
return 0;
}
相關文章
- HDU6415:Rikka with Nash Equilibrium(dp)UI
- hdu 6415 Rikka with Nash EquilibriumUI
- HDU-6415 Rikka with Nash Equilibrium (DP/找規律)UI
- 【dp+組合數學】hdu 2018 多校第九場 1001 Rikka with Nash Equilibrium hdu 6415UI
- 2018 Multi-University Training Contest 9----hdu 6415 Rikka with Nash EquilibriumAIUI
- 【記憶優化搜尋/dp】HDU - 6415 - 杭電多校第九場 - Rikka with Nash Equilibrium優化UI
- [DP]HDU6415(2018多校訓練賽第九場 Problem A) Rikka with Nash Equilibrium 題解UI
- hdu 6415 - DP
- HDU6415(DP)
- HDU 6415 (計數dp)
- HDU 6415(dp/記憶化搜尋)
- HDU多校第九次 6415 (dp
- HDU 6415(dp/找規律-2018多校第九場1001)
- hdu 2111 Saving HDU (DP)
- HDU 5831 Rikka with Parenthesis II (括號匹配)
- HDU1024(dp)
- HDU 6035 Colorful Tree(樹形DP)
- HDU 1074 Doing Homework(狀壓DP)
- HDU4652 Dice(期望dp推式子)
- HDU 5816 Hearthstone(狀態壓縮DP+概率)
- 「暑期訓練」「基礎DP」 Monkey and Banana (HDU-1069)NaN
- hdu--5418Victor and World+狀態壓縮DP
- HDU7458-啟發式合併最佳化DP
- 「暑期訓練」「基礎DP」免費餡餅(HDU-1176)
- hdu--4455+ Substrings+2012杭州區域賽C題+DP
- HDU 6787 Chess 2020百度之星 初賽三 T5 題解 dp
- [kuangbin帶你飛]專題十二 基礎DP1 D - Doing Homework HDU - 1074
- dp 套 dp(dp of dp)小記
- DP套DP
- [DP] 數位DP
- 【DP】Educational DP Contest
- dp套dp 隨寫
- Shape of HDU
- HDU 3349
- HDU 2052(C語言+註釋)+HDU 2090C語言
- 【DP】區間DP入門
- dp
- [DP] DP最佳化總結