Joyful
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 506 Accepted Submission(s): 219
However, Sakura is a very naughty girl, so she just randomly uses the tool for K times. More specifically, each time for Sakura to use that tool, she just randomly picks two squares from all the M×N squares, with equal probability. Now, kAc wants to know the expected number of squares that will be painted eventually.
For each test case, there is only one line, with three integers M,N and K .
It is guaranteed that 1≤M,N≤500 , 1≤K≤20 .
2 3 3 1 4 4 2
Case #1: 4 Case #2: 8HintThe precise answer in the first test case is about 3.56790123.
概率dp,谁做出来商kalili香吻一枚2333
参考了点击打开链接
就是把矩阵拆分,对每个小矩阵计算概率。
AC代码:
#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "cmath"
using namespace std;
int t, k;
double n, m;
int main(int argc, char const *argv[])
{
scanf("%d", &t);
for(int cas = 1; cas <= t; ++cas) {
scanf("%lf%lf%d", &n, &m, &k);
double ans = 0;
for(double i = 1; i <= n; ++i)
for(double j = 1; j <= m; ++j) {
double p = m * n;
p += (i - 1) * (j - 1) * (n - i + 1) * (m - j + 1);
p += (i - 1) * (m - j) * (n - i + 1) * j;
p += (j - 1) * (n - i) * (m - j + 1) * i;
p += (n - i) * (m - j) * i * j;
p += (i - 1) * m * (n - i + 1);
p += (m - j) * n * j;
p += (n - i) * m * i;
p += (j - 1) * n * (m - j + 1);
p = p / n / n / m / m;
ans += 1 - pow(1 - p, k);
}
printf("Case #%d: %d\n", cas, int(ans + 0.5));
}
return 0;
}
3647



被折叠的 条评论
为什么被折叠?



