ZOJ 3822 Domination 概率DP 2014年ACM_ICPC亚洲区域赛牡丹江现场赛D题
2014-12-23 20:59
579 查看
题目大意:
就是现在有一个N*M的棋盘(1 <= N, M <= 50)每次在上面的空位置随机选一个放一个棋子, 问使得所有行和所有列上都有棋子放置, 放置的棋子的数目期望
大致思路:
这题同步赛的时候没感觉, 现在做发现就是一个水题, 当时还是太弱了...
状态转移方程见代码注释吧..
代码如下:
Result : Accepted Memory : 51276 KB Time : 1750 ms
就是现在有一个N*M的棋盘(1 <= N, M <= 50)每次在上面的空位置随机选一个放一个棋子, 问使得所有行和所有列上都有棋子放置, 放置的棋子的数目期望
大致思路:
这题同步赛的时候没感觉, 现在做发现就是一个水题, 当时还是太弱了...
状态转移方程见代码注释吧..
代码如下:
Result : Accepted Memory : 51276 KB Time : 1750 ms
/* * Author: Gatevin * Created Time: 2014/12/23 20:26:43 * File Name: Sora_Kasugano.cpp */ #include<iostream> #include<sstream> #include<fstream> #include<vector> #include<list> #include<deque> #include<queue> #include<stack> #include<map> #include<set> #include<bitset> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cstring> #include<cctype> #include<cmath> #include<ctime> #include<iomanip> using namespace std; const double eps(1e-8); typedef long long lint; /* * 用dp[i][j][k]表示对于N*M的棋盘, 已经用k个子占了i行和j列时到达目标状态需要的chess piece数量期望 * 那么显然dp [M][min(N, M)~N*M] = 0, 状态转移方程: * dp[i][j][k] = (N - i)*(M - j)/(N*M - k)*(dp[i + 1][j + 1][k + 1] + 1) * + (N - i)*j/(N*M - k)*(dp[i + 1][j][k + 1] + 1) * + i*(M - j)/(N*M - k)*(dp[i][j + 1][k + 1] + 1) * + (i*j - k)/(N*M - k)*(dp[i][j][k + 1] + 1) * 考虑一下边界条件即可, dp[0][0][0]即为答案 */ /* * 牡丹江那场区域赛在同步赛场外做的时候没思路, 现在一看的确是个水题..当时还是太弱了 */ double dp[51][51][2510]; int main() { int t; scanf("%d", &t); int N, M; while(t--) { scanf("%d %d", &N, &M); memset(dp, 0, sizeof(dp)); for(int i = N; i >= 0; i--) for(int j = M; j >= 0; j--) { if(i == N && j == M) continue; for(int k = i*j; k >= min(i, j); k--) { dp[i][j][k] = 0; if(i + 1 <= N && j + 1 <= M && (i + 1)*(j + 1) >= k + 1) dp[i][j][k] += (N -i)*(M - j)*1.0/(N*M - k)*(dp[i + 1][j + 1][k + 1] + 1); if(i + 1 <= N && (i + 1)*j >= k + 1) dp[i][j][k] += (N - i)*j*1.0/(N*M - k)*(dp[i + 1][j][k + 1] + 1); if(j + 1 <= M && (j + 1)*i >= k + 1) dp[i][j][k] += i*(M - j)*1.0/(N*M - k)*(dp[i][j + 1][k + 1] + 1); if(i*j >= k + 1) dp[i][j][k] += (i*j - k)*1.0/(N*M - k)*(dp[i][j][k + 1] + 1); } } printf("%.8f\n", dp[0][0][0]); } return 0; }
相关文章推荐
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP(两种解法)
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP
- ZOJ 3822 Domination The 2014 ACM-ICPC 牡丹江区域赛 概率dp 先算概率,再转成期望
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-D ( ZOJ 3822 ) Domonation
- ZOJ3822 ACM-ICPC 2014 亚洲杯赛事现场牡丹江司D称号Domination 可能性DP
- ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)
- [zoj 3822]2014牡丹江区域赛 Domination 概率dp求期望
- ZOJ 3822 Domination(概率dp 牡丹江现场赛)
- zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)
- ZOJ 3822 Domination(概率dp 牡丹江现场赛)
- ZOJ 3822 Domination(DP,亚洲区域赛牡丹江站)
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-I ( ZOJ 3827 ) Information Entropy
- ZOJ3829 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛K题 Known Notation 贪心
- HDU5074 ACM-ICPC亚洲区域赛鞍山赛区现场赛E题 Hatsune Miku 二维DP
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-A ( ZOJ 3819 ) Average Score
- 2014ACM/ICPC亚洲区域赛牡丹江现场赛总结
- ZOJ-3822-Domination【概率dp】【2014牡丹江赛区】
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-A ( ZOJ 3819 ) Average Score
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation