博客
关于我
[牛客练习赛69] D. 火柴排队 多维dp+逆元+递推求排列组合
阅读量:334 次
发布时间:2019-03-04

本文共 1983 字,大约阅读时间需要 6 分钟。

??????????????????????????????

????

???????n???a?????????k??????????????d??????????????????????a_i < a_j???????a_i' < a_j'????

???????????????????????????????????????????????????????????

??????????????????????????dp[i][j][k]??i??????j????????k???i?????????

????????

  • ????????dp[i][j][0] = dp[i-1][j][0] + dp[i-1][j][1] * (a[i-1] + d ? a[i])
  • ???????dp[i][j][1] = dp[i-1][j-1][0] + dp[i-1][j-1][1]
  • ??????

    ???????????????????????????

    ????

    #include 
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    using namespace std;typedef long long ll;const double PI = acos(-1.0);const double eps = 1e-6;const ll mod = 998244353;const int inf = 0x3f3f3f3f;const int maxn = 5000 + 10;void get_comb(int n) { c[0] = 1; for (int i = 1; i <= n; ++i) { c[i] = (n - i + 1) * c[i - 1] % mod * inv(i) % mod; }}ll inv(ll a) { return pow(a, mod - 2, mod);}void main() { ll n, d; scanf("%lld %lld", &n, &d); get_comb(n); vector
    a(n + 1); for (int i = 1; i <= n; ++i) { scanf("%lld", &a[i]); } sort(a + 1, a + n + 1); dp[1][1][1] = 1; dp[1][0][0] = 1; for (int i = 2; i <= n; ++i) { for (int j = 0; j <= i; ++j) { if ((i - 1) & 1) { dp[i & 1][j][0] = (dp[i - 1 & 1][j][0] + dp[i - 1 & 1][j][1] * (a[i - 1] + d <= a[i])) % mod; dp[i & 1][j][1] = (dp[i - 1 & 1][j - 1][1] + dp[i - 1 & 1][j - 1][0]) % mod; } else { dp[i & 1][j][0] = (dp[i - 1][j][0] + dp[i - 1][j][1] * (a[i - 1] + d <= a[i])) % mod; dp[i & 1][j][1] = (dp[i - 1][j - 1][1] + dp[i - 1][j - 1][0]) % mod; } } } for (int i = 1; i <= n; ++i) { ll ans = (dp[n & 1][i][0] + dp[n & 1][i][1]) % mod; ans = ans * pow(c[i], mod - 2, mod) % mod; ans = (ans + mod) % mod; printf("%lld\n", ans); }}

    ????

  • ??????????????????????????
  • ????????dp[1][0][0]?dp[1][1][1]????1?
  • ??????????????????????dp??
  • ????????k????????????????????????
  • ????????O(n^2)???????????????n=5000????

    转载地址:http://yqmh.baihongyu.com/

    你可能感兴趣的文章
    Python基础 | 关于“循环”那些事
    查看>>
    python系列【仅供参考】:python 远程rdp
    查看>>
    python基于flask搭建http服务(四)—— Docker容器化部署
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>