link。

首先将问题弱化为 1-d,我们待定容斥系数 \(f_i\),可以写出答案的式子:\(\sum\limits_{i=a}^nf_i\binom{n}{i}2^{n-i}\)。解释就是,我们想让 \(\binom{n}{i}2^{n-i}\) 达到“至少”的效果,但是明显会算重,所以通过这个容斥系数 \(f_i\) 达到“恰好”的效果,于是原题“至少”的答案就是这个。

每一个“恰好” \(i\) 个的方案数在最终的答案中的贡献次数为 \(1\),也就是说 \(\sum\limits_{j=a}^if_j\binom{i}{j}=1\)。这个的意思就是如果至少有 \(i\) 的方案数重了,那么它一定是从前面开始重的(就是说 \(1,\dots,i-1\) 的随便摆的部分跟它重了),所以从前面开始容斥。

然后就好算了,可以直接得出 \(f_i=\sum\limits_{j=a}^{i-1}f_j\binom{i-1}{j-1}\),或者你也可以用下吸收公式推式子。

但实际上这个题还有一些常数的优化,具体可以看看 Siyuan 的博客。

  1. #include<bits/stdc++.h>
  2. #define il __inline__ __attribute__((always_inline))
  3. constexpr int kMod=998244353;
  4. __int128 sum;
  5. int n,m,A,B,i,j,k;
  6. int coef[2][3100],pw[9000100],bin[3100][3100];
  7. il void MCase() {
  8. for(k=0; k<2; ++k) {
  9. coef[k][0]=1;
  10. for(int i=(k?B:A); i<=(k?m:n); ++i) coef[k][i]=1ll*(((i-(k?B:A))&1)?-1:1)*bin[i-1][(k?B:A)-1]%kMod*bin[k?m:n][i]%kMod;
  11. }
  12. int res=0;
  13. for(i=A; i<=n; ++i)
  14. for(j=B; j<=m; ++j) (res+=1ll*coef[0][i]*coef[1][j]%kMod*pw[(n-i)*(m-j)]%kMod)%=kMod;
  15. std::printf("%d\n",res<0?res+kMod:res);
  16. }
  17. signed main(int argc,char const* argv[]) {
  18. pw[0]=1;
  19. for(i=1; i<9000100; ++i) pw[i]=1ll*pw[i-1]*2%kMod;
  20. bin[0][0]=1;
  21. for(i=1; i<3100; ++i) {
  22. bin[i][0]=1;
  23. for(j=1; j<=i; ++j) bin[i][j]=(bin[i-1][j]+bin[i-1][j-1])%kMod;
  24. }
  25. for(; ~std::scanf("%d%d%d%d",&n,&m,&A,&B);) MCase();
  26. return 0;
  27. }

「acmhdu - 6314」Matrix的更多相关文章

  1. 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)

    [题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...

  2. 「THUSCH 2017」大魔法师 解题报告

    「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...

  3. 【LOJ】#3086. 「GXOI / GZOI2019」逼死强迫症

    LOJ#3086. 「GXOI / GZOI2019」逼死强迫症 这个就是设状态为\(S,j\)表示轮廓线为\(S\),然后用的1×1个数为j 列出矩阵转移 这样会算重两个边相邻的,只要算出斐波那契数 ...

  4. 「 洛谷 」P2768 珍珠项链

    珍珠项链 题目限制 内存限制:125.00MB 时间限制:1.00s 标准输入输出 题目知识点 动态规划 \(dp\) 矩阵 矩阵乘法 矩阵加速 矩阵快速幂 题目来源 「 洛谷 」P2768 珍珠项链 ...

  5. 「 洛谷 」P2151 [SDOI2009]HH去散步

    小兔的话 欢迎大家在评论区留言哦~ HH去散步 题目限制 内存限制:125.00MB 时间限制:1.00s 标准输入 标准输出 题目知识点 动态规划 \(dp\) 矩阵 矩阵乘法 矩阵加速 矩阵快速幂 ...

  6. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  7. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  8. 前端构建工具之gulp(一)「图片压缩」

    前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...

  9. fir.im Weekly - 如何打造 Github 「爆款」开源项目

    最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...

  10. 更新日志 - fir.im「高级统计」功能上线

    距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...

随机推荐

  1. PHP sprintf函数 bug

    sprintf() 定义和用法 format参数 可能的格式值: %% - 返回一个百分号 % %b - 二进制数 %c - ASCII 值对应的字符 %d - 包含正负号的十进制数(负数.0.正数) ...

  2. IAR学习笔记:将app和boot合并

    一.前言 最近用到了IAR编译调试软件,但是生成的app.bin和boot.bin是独立分开的,看了下IAR官方note和其他大佬的解释,找到了俩合并的方法: 参考: https://www.iar. ...

  3. 爬取豆瓣Top250图书数据

    爬取豆瓣Top250图书数据 项目的实现步骤 1.项目结构 2.获取网页数据 3.提取网页中的关键信息 4.保存数据 1.项目结构 2.获取网页数据 对应的网址为https://book.douban ...

  4. 混沌演练状态下,如何降低应用的 MTTR(平均恢复时间)

    在企业业务领域,锦礼是针对福利.营销.激励等员工采购场景的一站式解决方案,包含面向员工.会员等弹性激励SAAS平台.由于其直接面向公司全体员工,其服务的高可用尤其重要,本文将介绍锦礼商城大促前夕,通过 ...

  5. std::aligned_alloc

    定义于头文件 <cstdlib> (c++) void * aligned_alloc ( std::size_t alignment, std::size_t size); (c++17 ...

  6. midjourney国内版上线! 快来体验一下midjourney的强大功能

    最近大火的midjourney国内版上线了!该网站对接了midjourneyAPI,以文生图.以图生图功能都支持,下面我们来体验一下它的功能. 网址:https://www.weijiwangluo. ...

  7. Python与TensorFlow:如何高效地构建和训练机器学习模型

    目录 标题:<Python 与 TensorFlow:如何高效地构建和训练机器学习模型> 一.引言 随着人工智能的快速发展,机器学习作为其中的一个重要分支,受到了越来越多的关注和应用.而P ...

  8. 【python基础】文件-初识文件

    文本文件可存储的数据量是非常多的.每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 1.读取文件 1.1读取整个文件 ...

  9. Github秒变VSCode在线编辑器

    在仓库页面 在网页地址中github后面加上 1s 即可

  10. 筛选出N以内的素数

    解题思路:1.素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数.(也就是只有 1 和它本身能整除)2.利用两个for循环来判断素数. 注意事项:1.注意for添加花括号.2.注意输 ...