【题目】http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3822

【报告】

概率DP问题。

把所有的有格子的行列集中到左上角,很容易可以得出状态转移方程。

令dp[k ,i ,j]表示放了k个棋子,集中在[1,1]-[i,j]的概率。

那么dp[k, i, j]=Σ

dp[k-1, i, j] * (i*j-k+1) / (n*m-k+1)        {i!=n&&j!=m} // 放在左上角的概率

dp[k-1, i-1, j] * (n-i+1)*j / (n*m-k+1)    {i>1}  // 放在左下角,矩形向下扩张

dp[k-1, i, j-1] * (n-j+1)*i / (n*m-k+1)    {j>1} // 放在右上角

dp[k-1, i-1, j-1] *(n-j+1)*(n-i+1) / (n*m-k+1)  {i>1&&j>1} // 放在右下角

边界条件:dp[1, 1, 1]=1,

dp[k, i, j]=0   k>i*j

还有一些细节问题,看程序。

【程序】

#include
#include
#include
#include
#include
#include
using namespace std;
const int N = 50;
double dp[N*N+1][N+1][N+1];
int main()
{
    int T;
    scanf("%d",&T);
    while (T--)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        memset(dp,0,sizeof(dp));
        dp[1][1][1]=1;
        for (int k=2;k<=n*m;k++)
            for (int i=1;i<=n;i++)
                for (int j=1;j<=m;j++)
                {
                    dp[k][i][j]=0;
                    if (k>i*j) continue;
                    if (k<=i*j&&(i!=n||j!=m))
                        dp[k][i][j]+=dp[k-1][i][j]*((i*j-k+1.0)/(n*m-k+1));
                    if (i>1&&j>1)
                        dp[k][i][j]+=dp[k-1][i-1][j-1]*(((n-i+1.0)*(m-j+1))/(n*m-k+1));
                    if (i>1)

【ZOJ】3822 Domination_天涯浪子_新浪博客相关推荐

  1. 【ZOJ】3829 Known Notation_天涯浪子_新浪博客

    [题目]http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5383 [报告] 很明显,*是不用加的,只用加数字就行了.数字最多加 符 ...

  2. 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1022 [报告] 模拟,直接模拟一个栈的运行就行了. [程序] // Task: 1022 Train P ...

  3. 【HDOJ】1003 Max Sum_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...

  4. 【HDOJ】4768 Flyer_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...

  5. 【HDOJ】4699 Editor_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...

  6. 【HDOJ】4704 Sum_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...

  7. 【HDOJ】1015 Safecracker_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...

  8. 【HDOJ】1020 Encoding_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...

  9. 【HDOJ】4602 Partition_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...

最新文章

  1. 项目学生:带有Jersey的Web服务服务器
  2. 对于Algorand的介绍
  3. ORACLE HANDBOOK系列之六:ODP.NET与复杂的PL/SQL数据类型(Using ODP.NET To Deal With Complex PLSQL Data Types)...
  4. 世界定级 企业即时通讯软件
  5. 用Veritas制作MSI文件,Active Directory系列之二十四
  6. Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
  7. c语言中形参和实参的区别
  8. html动感相册怎么转成视频,ps把相片或图片制作成一个动感的相册视频效果
  9. 计算机c盘删除的文件怎么找回,C盘空间不足怎么办 删除C盘文件教程【详解】...
  10. CentOS 识别NTFS格式U盘
  11. CTF·Crypto·古典密码大全
  12. 什么蓝牙耳机好用又不贵?好用不贵的蓝牙耳机推荐
  13. 开源社与 Dev.Together 2022
  14. UI线程与子线程通信示例 日记
  15. 【LittleVGL】stm32f412-discovery探索板-ft6x06驱动问题
  16. nginx反向代理websocket 小坑
  17. Linux下stream内存带宽测试参数和示例详解附源码(总结)
  18. 越权漏洞简介及靶场演示
  19. 《 罗宇庭蜕变幸福路》分享做回男人的种种心酸
  20. 当贝X3对比明基I750哪个值得看,当贝X3功能丰富值得选

热门文章

  1. 路由器原理及路由协议
  2. 布朗特克(Bron.tok)病毒专杀工具
  3. 马斯洛提出动机理论_【错题本】马斯洛的需要层次理论
  4. 三大UML建模工具Visio、Rational Rose、PowerDesign的区别
  5. steam游戏平台的数据分析
  6. 实际开发中,TCP / IP五层网络模型是如何工作的?
  7. 计算机主板南桥的作用,主板南桥是什么,主板南桥芯片在哪?
  8. 招银网络科技前端开发电话面试
  9. 免费素材下载:超酷的简单按钮UI
  10. 挑战程序设计 1.1 抽签