第一道容斥

\(ans[i] = \sum_{j = 0}^{min(cnt, n / 2)} (-1)^j \tbinom{cnt}{j} \tbinom{n - 2*j + k - 1}{k - 1}\)

i 为 [2, 2k]

cnt是满足x, y小于等于k 且 x + y = i 的对的种类数

后面那个组合数是除了j对 数剩下的数的取值

即\(\sum_{t = 1}^{k} X_t = n - 2j\)

\(X_t\)指t的出现次数

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 4005;
const double eps = 1e-9;
const long long P = 998244353;
int n, k;
long long jie[N], jv[N], inv[N], tot[N];
long long C(long long x, long long y){
return jie[x] * jv[x - y] % P * jv[y] % P;
} int main() {
scanf("%d%d", &k, &n);
jie[0] = inv[0] = jv[0] = jie[1] = inv[1] = jv[1] = 1;
for(int i = 2; i <= n + k; ++i){
jie[i] = jie[i - 1] * i % P;
inv[i] = (P - P / i) * inv[P % i] % P;
jv[i] = jv[i - 1] * inv[i] % P;
}
for(int i = 1; i <= k; ++i) ++tot[i + 1], --tot[i + k + 1];
for(int i = 1; i <= k + k; ++i) tot[i] += tot[i - 1]; //存在另一个数y满足x + y = i的x有多少个
for(int i = 2; i <= k + k; ++i){
long long cnt = ((tot[i] + 1) >> 1), ans = 0;
for(int j = 0, d = 1; j <= cnt && j + j <= n; ++j, d = P - d){
ans = (ans + 1ll * d * C(cnt, j) % P * C(n - (j << 1) + k - 1, k - 1) % P) % P;
// d = (-1)^j 选择哪几对 剩下的数取哪些
}
printf("%lld\n", ans);
}
return 0;
}

ATR102E Stop. Otherwise... [容斥]的更多相关文章

  1. POJ1091跳蚤(容斥 + 唯一分解 + 快速幂)

      题意:规定每次跳的单位 a1, a2, a3 …… , an, M,次数可以为b1, b2, b3 …… bn, bn + 1, 正好表示往左,负号表示往右, 求能否调到左边一位,即 a1* b1 ...

  2. HDU 4059 容斥初步练习

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  3. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  4. 【BZOJ-4455】小星星 容斥 + 树形DP

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 137[Submit][Status] ...

  5. cf#305 Mike and Foam(容斥)

    C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  6. UVa12633 Super Rooks on Chessboard(容斥 + FFT)

    题目 Source http://acm.hust.edu.cn/vjudge/problem/42145 Description Let’s assume there is a new chess ...

  7. PE-1 & 暴模|容斥

    题意: 求1000以下3或5的倍数之和. SOL: 暴模也是兹瓷的啊... 那么就想到了初赛悲催的滚粗...容斥忘了加上多减的数了... 然后对着题...T = 3*333*(1+333)/2 + 5 ...

  8. HDU 5838 (状压DP+容斥)

    Problem Mountain 题目大意 给定一张n*m的地图,由 . 和 X 组成.要求给每个点一个1~n*m的数字(每个点不同),使得编号为X的点小于其周围的点,编号为.的点至少大于一个其周围的 ...

  9. hdu 5792(树状数组,容斥) World is Exploding

    hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...

随机推荐

  1. 在网站开发时,可以设置防盗,不被复制和F12

    禁止小功能 //禁止右键 document.oncontextmenu = function () { return false } //禁止f12 document.onkeydown = func ...

  2. Linux 典型应用之缓存服务

    memcached 安装和简单使用 yum install memcached 启动 -d 表示以守护进程的方式启动 memcached -d 安装telnet 它可以检测某个端口是否是通的,可以发送 ...

  3. JMeter Exception: java.net.BindException: Address already in use: connect(转)

    转自:http://twit88.com/blog/2008/07/28/jmeter-exception-javanetbindexception-address-already-in-use-co ...

  4. 【Python3练习题 009】 打印出所有的“水仙花数”

    # [Python练习题 009] 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,# 其各位数字立方和等于该数本身.例如:153是一个“水仙花数”,# 因为153=1的三次方+5的三次方+ ...

  5. [转帖] bat方式遍历目录内的文件

    https://blog.csdn.net/qq_34924407/article/details/82781956 知识挺好用的 学习一下. #所有文件,包括子目录下的文件 @echo offcd ...

  6. [转帖]IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

    IP地址.子网掩码.网络号.主机号.网络地址.主机地址以及ip段/数字-如192.168.0.1/24是什么意思? 2016年03月26日 23:38:50 JeanCheng 阅读数:105674  ...

  7. Jquery ajax传递xml方式在ie8下兼容问题

    主要问题就是ie8把xml格式在打开的时候转换成了string,我们只用把其转换回xml就可以了. $.ajax({ type:’GET’, url:’list.php?pagenow=’+count ...

  8. Prism框架研究(一)

    从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...

  9. SQL Server 只安装客户端的方法

    只安装管理工具

  10. Bootstrap之登陆页面范例

    代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...