• 2018 “百度之星”程序设计大赛


    度度熊看球赛

    Problem Description
    世界杯正如火如荼地开展!度度熊来到了一家酒吧。

    有 N 对情侣相约一起看世界杯,荧幕前正好有 2×N 个横排的位置。

    所有人都会随机坐在某个位置上。

    当然,如果某一对情侣正好挨着坐,他们就会有说不完的话,影响世界杯的观看。

    一般地,对于一个就座方案,如果正好有 K 对情侣正好是挨着坐的,就会产生 DK 的喧闹值。

    度度熊想知道随机就座方案的期望喧闹值。

    为了避免输出实数,设答案为 ans,请输出 ans×(2N)! mod P 的值。其中 P=998244353

    Input
    有多组数据(不超过 1000 组),读到EOF结束。

    对于每一组数据,读入两个数 N 和 D 。

    1≤N,D≤1000

    Output
    对于每一组数据,输出一个数表示答案。

    Sample Input

    1 10
    2 3

    Sample Output

    20
    104

    题解:
    官方题解其实已经解释得很好了,这样 dp 的确很巧妙。

    dp[i][j] 表示前 i 对情侣,有 j 对坐在一起的方案数。
    首先为了简便,我们把每对情侣中两个人看作是相同的两个人,最后乘上 2^n 即可。
    最后要求 ans×(2N)!,也就是求出 i 对情侣坐位所有不同方案数。
    然后由前 i 对递推转移到前 i+1 对 :
    1、第 i+1 对在一起:
    (1)第 i+1 对插入进另一对中间, dp[i+1][j] += dp[i][j] * j ;
    (2)第 i+1 对不插入另一对中间,dp[i+1][j+1] += dp[i][j] * (2*i+1-j) ;
    2、第 i+1 对不在一起:
    (1)第 i+1 对的两个人分别插入另外两对中间,dp[i+1][j-2] += dp[i][j] * C(j,2) ;
    (2)第 i+1 对的两个人只有一个人插入到另一对中间,dp[i+1][j-1] += dp[i][j] * C(j,1) ;
    (3)第 i+1 对的两个人都不插入其它对里,dp[i+1][j] += dp[i][j] * C(2*i+1-j, 2) ;

    代码懒得写了_

  • 相关阅读:
    判断二分图的染色法
    dfs框架
    codeforces 158c
    省选总结
    云盘
    KMP
    二分
    【又想多了】 听 怎样成为高手-罗辑思维 记录
    小刘(第二版)
    UVA 1594:Ducci Sequence (模拟 Grade E)
  • 原文地址:https://www.cnblogs.com/sbfhy/p/9464047.html
Copyright © 2020-2023  润新知