牛客练习赛64 D【容斥+背包】
牛客练习赛64 D.宝石装箱
Description
\(n\)颗宝石装进\(n\)个箱子使得每个箱子中都有一颗宝石。第\(i\)颗宝石不能装入第\(a_i\)个箱子。求合法的装箱方案对\(998244353\)取模。
两种装箱方案不同当且仅当两种方案中存在一颗编号相同的宝石装在不同编号的箱子中。
\(n\le 8000\)
题解:
直接计算肯定不好做,考虑用容斥来做
令\(g_x\)为\(n\)个宝石中\(x\)个宝石放在不合法的位置的方案数
那么我们的答案可以用容斥表示为\(\sum_{i=0}^{n}(-1)^i\cdot g_i\cdot (n-i)!\)
其中\(g_i\cdot (n-i)!\)可以表示为至少选择\(i\)个宝石放在不合法的位置的方案数,其中必然会出现重复计数,比如固定了\(1,3\)不合法然后在后面随意放置的情况下\(2\)放在了不合法位置,和固定了\(1,2\)不合法然后在后面随意放置的情况下\(3\)放在了不合法位置,所以这里要利用容斥去解决
现在考虑如何计算\(g_x\)
可以令\(g[i][j]\)表示:只考虑前\(i\)个箱子的情况下,有\(j\)个宝石放在不合法的位置的方案数,\(A[i]\)表示有多少个宝石放在第\(i\)个箱子是不合法的
转移方程:\(g[i][j]=g[i-1][j] + g[i-1][j-1]\cdot A[i]\)
其中\(g[i][0]=1\)
也就是说当前这\(j\)个不合法的位置可能有两种方式得到:
- \(j\)个不合法的宝石都放在箱子\(1—i-1\)之间
- \(j-1\)个不合法的宝石放在在箱子\(1—i-1\)之间,还有一个不合法的宝石在\(i\)这个箱子中
最后得到的\(g[n][j]\)就是\(g_x\)
这个状态转移方程都是从上一层得到的,可以内存优化,只用一维数组
//#pragma GCC optimize("O3")
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
typedef long long int LL;
const LL MOD = 998244353;
const int MAXN = 8e3+7;
LL n,f[MAXN],A[MAXN],g[MAXN];
int main(){
____();
f[0] = 1;
for(int i = 1; i < MAXN; i++) f[i] = f[i-1] * i % MOD;
cin >> n;
for(int i = 1; i <= n; i++){
int x; cin >> x;
A[x]++;
}
// g[i][x]: 前i个盒子x个不合法的case
// ret = sigma_{x=0}^{n} (-1)^x * g[x] * (n-x)!
g[0] = 1;
for(int i = 1; i <= n; i++) for(int j = i; j >= 1; j--) g[j] = (g[j] + g[j-1] * A[i]) % MOD;
LL ret = 0;
for(int i = 0, j = 1; i <= n; i++, j *= -1) ret = (ret + j * g[i] * f[n-i]) % MOD;
cout << (ret+MOD)%MOD << endl;
return 0;
}
牛客练习赛64 D【容斥+背包】的更多相关文章
- 牛客练习赛64 如果我让你查回文你还爱我吗 线段树 树状数组 manacher 计数 区间本质不同回文串个数
LINK:如果我让你查回文你还爱我吗 了解到了这个模板题. 果然我不会写2333... 考试的时候想到了一个非常辣鸡的 线段树合并+莫队的做法 过不了不再赘述. 当然也想到了manacher不过不太会 ...
- 牛客练习赛64 红色的樱花 exgcd 贪心
LINK:The red sakura 暴怒狂樱 血染京都. 这题质量不咋地 这题也没啥营养. 不过还是存在值得学习的地方的. 一个trick n行 m列 第一行与第n行相连 第1列和第m列相连的时候 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
随机推荐
- Python绘制雷达图(俗称六芒星)
原文链接:https://blog.csdn.net/Just_youHG/article/details/83904618 背景 <Python数据分析与挖掘实战> 案例2–航空公司客户 ...
- PHP MySQLi extension is not loaded
PHP MySQLi extension is not loaded 如何解决呢? yum -y install mysqli.so huozhe yum -y install php-mysql
- CTFshow萌新赛-萌新福利
下载链接文件 拿到show.bin文件 使用010Editor工具打开文件 做取反操作 取反后可以看到 把show.bin改为show.m4a 使用音频播放软件播放,即可得到flag
- Hadoop 专栏 - MapReduce 入门
MapReduce的基本思想 先举一个简单的例子: 打个比方我们有三个人斗地主, 要数数牌够不够, 一种最简单的方法可以找一个人数数是不是有54张(传统单机计算); 还可以三个人各分一摞牌数各自的(M ...
- Redis 实战 —— 03. Redis 简单实践 - Web应用
需求 功能: P23 登录 cookie 购物车 cookie 缓存生成的网页 缓存数据库行 分析网页访问记录 高层次角度下的 Web 应用 P23 从高层次的角度来看, Web 应用就是通过 HTT ...
- ElasticSearch极简入门总结
一,目录 安装es 项目添加maven依赖 es客户端组件注入到spring容器中 es与mysql表结构对比 索引的删除创建 文档的crud es能快速搜索的核心-倒排索引 基于倒排索引的精确搜索. ...
- Transparent Gateway的使用方法
前言 使用Transparent Gateway(透明网关),建立ORACLE与SQLServer的连接. 实现功能:在ORACLE中查询SQLServer数据库的内容. 注:网上有ORACLE和SQ ...
- OpenDaylight — YANG
1. 介绍 YANG 是一种用于为 NETCONF 协议建模数据的语言. YANG 将数据的层次结构建模为一棵树. 2. 节点类型 2.1 leaf 它只有一个特定类型的值,并且没有子节点. YANG ...
- 什么是STP
简介 了解STP 配置STP 相关信息 简介 STP(Spanning Tree Protocol)是运行在交换机上的二层破环协议,环路会导致广播风暴.MAC地址表震荡等后果,STP的主要目的就是确保 ...
- 为什么MySQL索引使用B+树
为什么MySQL索引使用B+树 聚簇索引与非聚簇索引 不同的存储引擎,数据文件和索引文件位置是不同的,但是都是在磁盘上而不是内存上,根据索引文件.数据文件是否放在一起而有了分类: 聚簇索引:数据文件和 ...