原题链接
组合数 + 容斥思想,关键在于如何使每个不合法方案只被计算一次.

代码如下:

#include <bits/stdc++.h>using namespace std;#define pii pair<int, int>
#define ll long longinline int read() {int x = 0, f = 0; char ch = getchar();while (!isdigit(ch)) f = ch == '-', ch = getchar();while (isdigit(ch)) x = (x << 3) + (x << 1) + (ch ^ 48), ch = getchar();return f ? -x : x;
}const int N = 200010, K = 2010;
const int mod = 998244353;
int n, m, k, fac[N], inv[N], F, G;
struct Node {pii p; int f, g; bool operator < (const Node &that) const {if (p.first == that.p.first) return p.second < that.p.second; return p.first < that.p.first; }
};
Node nd[N]; void AddMod(int &p, int k) { p = ((p + k) % mod + mod) % mod; }ll qpow(ll a, ll b, ll p) {ll res = 1ll; while (b) {if (b & 1) res = (res * a) % p; a = (a * a) % p; b >>= 1ll; }return res;
} ll C(ll n, ll m) {if (m < 0 || n < 0 || m > n) return 0ll; return (ll)fac[n] * inv[m] % mod * inv[n - m] % mod;
}int main() {n = read(); m = read(); k = read(); fac[0] = 1; for (ll i = 1; i < N; ++i) fac[i] = (ll)fac[i - 1] * i % mod; inv[N - 1] = qpow(fac[N - 1], mod - 2, mod); for (ll i = N - 2; i >= 0; --i) inv[i] = (ll)inv[i + 1] * (i + 1) % mod; for (int i = 1; i <= k; ++i) {nd[i].p.first = read(); nd[i].p.second = read(); nd[i].f = C(nd[i].p.first + nd[i].p.second, nd[i].p.first); nd[i].g = C(n - nd[i].p.first + m - nd[i].p.second, n - nd[i].p.first); }sort(nd + 1, nd + k + 1); for (int i = 1; i <= k; ++i) { for (int j = 1; j < i; ++j) {if (nd[j].p.second <= nd[i].p.second) {int d = nd[j].f * C(nd[i].p.first - nd[j].p.first + nd[i].p.second - nd[j].p.second, nd[i].p.first - nd[j].p.first) % mod; AddMod(nd[i].f, -d); }}}reverse(nd + 1, nd + k + 1); for (int i = 1; i <= k; ++i) {for (int j = 1; j < i; ++j) {if (nd[j].p.second >= nd[i].p.second) {int d = nd[j].g * C(nd[j].p.first - nd[i].p.first + nd[j].p.second - nd[i].p.second, nd[j].p.first - nd[i].p.first) % mod; AddMod(nd[i].g, -d);            }}}int ans = 0ll; for (int i = 1; i <= k; ++i) AddMod(F, nd[i].f); for (int i = 1; i <= k; ++i) AddMod(G, nd[i].g); for (int i = 1; i <= k; ++i) {AddMod(ans, (ll)nd[i].f * (((G - nd[i].g) % mod + mod) % mod) % mod);  } // 分配率优化printf("%d\n", ans); return 0;
}

jcyzoj1505: 原地tp相关推荐

  1. 【数据结构算法】-- C语言

    用C语言实现的数据结构算法,下面来一个一个讲解: (Swap函数在末尾,一个换位函数,理解即可) 1,插入排序 顾名思义就是一个值从前面开始一个一个插入,插入的时候排序一次,有 n 个数就排序 n 次 ...

  2. Unity2D案例学习——背包系统制作(ScriptableObject)

    00 简介 该学习案例来自b站up主M_Studio的系列视频背包系统,此篇博客为案例学习笔记 项目概览 在该项目中, 01 项目基础内容的搭建 系列视频的讲解中不包括基础场景的搭建以及角色移动控制的 ...

  3. 智能识别系统---基于颜色直方图的相似目标查找(图像去噪,MeanShift匹配目标)

    文章目录 简介 计算概率图像 去噪 MeanShift匹配目标 MeanShift介绍 代码 (原地TP) 不清除什么是颜色直方图和反向投影的同学可以先看这一篇 简介 基于颜色直方图的相似目标查找的主 ...

  4. 卡特点燃TP流出装思路

    技能: 天赋推荐: 适合对线:劫.男刀.亚索之类没有控制的中单,以及对面团队控制很少的情况. 如果中单是安妮,冰女,鳄鱼,辅助是泰坦,日女,机器之类整体控制技能比较多.附系天赋需要点出韧性. 出门出装 ...

  5. 和tp数据库_CAN / CAN FD传输层(TP)详解

    本文分享CAN / CAN FD在TP层传输规则详解,因为是从个人角度解读协议,有不精准之处,希望指出. CAN/CAN FD总线TP层映射到OSI计算机七层模型是在第三层和第四层: 对应CAN Fr ...

  6. TP框架中field查询字段

    TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...

  7. TP 框架实现支付宝接口功能

    最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能.这里我用的是即时到帐的接口,具体实现的步骤如下: 一.下载支付宝接口包 下载地址: https://doc.open.alip ...

  8. crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

  9. 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

    https://www.toutiao.com/a6706449645901464078/ 2019-06-25 20:49:47 大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP. ...

最新文章

  1. phoenix 开发API系列 目录
  2. pythonunittest接口测试_基于python+unittest +requests接口测试
  3. Vue3.0 备受热捧!2020 前端开发进阶必读
  4. 计算机网络与综合布线系统设计,计算机网络与通信技术10-综合布线系统.ppt
  5. 边栏实现过程中,导入style.css没用
  6. 二级计算机java2017级_2017计算机等级二级考试java练习题及答案
  7. java多线程学习-java.util.concurrent详解(五) ScheduledThreadPoolExecutor
  8. 机器学习(八)——SVD推荐系统
  9. 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
  10. 【题解】LuoGu1512:伊甸园日历游戏
  11. maya cmds 笔记_1
  12. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮、代码补全等...
  13. [生存志] 第74节 孔子集结诗经
  14. 利用trie Tree 解决查找连续子字符串的问题
  15. eclipse提示:“The superclass “javax.servlet.http.HttpServlet“ was not found on the Java“解决办法
  16. Leetcode第八题:字符串转换整数
  17. [分享]NOAA磁偏角计算器
  18. 黑马程序员——UI基础纪要
  19. 汇总!单片机(MCU)最强科普
  20. WP 平衡球游戏开发教程(三) -DebugDraw(XNA渲染)

热门文章

  1. 经验分享 | 我的八股文学习路线及攻略
  2. 两个路由器如何构建局域网
  3. 弱加密算法有哪几种_不安全的加密算法有哪几种
  4. 大话——从细分市场观商业模式
  5. 计算机二级怎么复习,全国计算机等级考试应该如何备考
  6. (五)DDR协议命令波形时序二——(Precharge、Refresh、Self Refresh、Power Down)
  7. iphone与android共享位置,在iPhone或Android上分享你的位置
  8. SAP AW01N 资产浏览器数据查看详解
  9. 如何将打开res aw目录中的数据库文件?
  10. mpvue开发微信小程序踩坑笔记