Sky Full of Stars
题目链接:
题目大意:
给定一个 \(n \times n\) 的矩形,在里面填充三种颜色,求使得至少一行或至少一列同色的方案数。
解法
容斥
我们不去考虑反演,直接开始容斥,我们不难将问题进行转化,去计算此时答案的补集,那么最后的答案就是 \(3^{n\times n} -\) 补集。我们在将问题进行转化,我们不如去直接计算第一行同色且且二行同色 \(\cdots\) 且第一列同色且第二列同色 \(\cdots\) 的方案数,我们令 \(F\) 为满足上面条件的方案数,那么最后的答案就是 :
\]
我们考虑如何去计算 \(F\)。我们不难发现对于 \(i,j>0\),\(\left(i=0\right) \lor (j=0)\),\((i=0) \land (j=0)\)是三种不同的情况,那么我们分开计算。
首先对于 \((i=0) \land (j=0)\),此时没有任何限制条件,对应的 \(F(S) = 3^{n\times n}\)。
对于 \((i=0) \lor (j=0)\),此时对于发现行列之间没有交叉点,也就是行列之间没有颜色的约束,故此时的 \(F(S) = 2\times \sum_{i=1}^n (-1)^i \binom{n}{i} 3^{n^2 -ni +i}\)。
对于这个式子,我们考虑如何去掉求和符号就行优化,我们准备直接利用二项式定理去进行优化:
F(S) &= 2\times \sum_{i=1}^n (-1)^i \binom{n}{i} 3^{n^2 -ni +i}\\
&=2\times 3^{n^2} \times \sum_{i=1}^n (-1)^i \binom{n}{i} 3^{-ni+i} \\
&=2\times 3^{n^2} \times \sum_{i=1}^n \binom{n}{i} (-3^{(1-n)})^i \\
&=2\times 3^{n^2} \times [(1-3^{(1-n)})^n -1]
\end{aligned}\]
最后考虑 \(i,j>0\) 的情况我们不难发现此时对应的 \(i\) 行,\(j\) 列的颜色应该相同,所以对应的 \(F(S) = \sum_{i=1}^n \sum_{j=1}^n (-1)^{i+j} \binom{n}{i} \binom{n}{j} 3^{n^2 - n(i+j)-ij + 1}\)
之后和第二种情况一样,大力推式子,二项式定理优化即可。
反演
我们首先明确两个含义:
\(F_{i,j}\) 表示至少 \(i\) 行 \(j\) 列同色的方案数
\(G_{i,j}\) 表示恰好 \(i\) 行,\(j\) 列同色的方案数。
那么我们就知道最后答案为 \(Ans = F_{0,0} - G_{0,0}\) 即全集减去没有一行并且没有一列同色的方案数。
那么根据二维二项式反演可知 :
\]
由此可知:
G_{0,0} &= \sum_{i=0}^{\infty} \sum_{j=0}^{\infty} (-1)^{i+j} \binom{i}{0} \binom{j}{0} F_{i,j} \\&
= \sum_{i=0}^{\infty} \sum_{j=0}^{\infty} (-1)^{i+j} F_{i,j}
\end{aligned}\]
对于 \(F_{i,j}\) 的计算方法上面已经提到过了,这里就不再提了。
最后贴一下代码吧
Code
#include<bits/stdc++.h>
#define int long long
#define ll long long
const int M = 1e6 + 7 , mod = 998244353;
int fac[M] , inv[M];
inline int Pow(int a , int b) {
int ans = 1; for(; b; b >>= 1 , a = a * a % mod) if(b & 1) ans = ans * a % mod;
return ans;
}
inline int C(int n , int m) {return fac[n] * inv[m] % mod * inv[n - m] % mod;}
signed main () {
int n; std::cin >> n;
inv[0] = fac[0] = 1;for(int i = 1; i <= 1e6; ++ i) fac[i] = fac[i - 1] * i % mod , inv[i] = Pow(fac[i] , mod - 2);
int ans = 0;
for(int i = 1; i <= n; ++ i) {
int tmp = C(n , i) * Pow(3 , (mod - 1 - i * n % (mod - 1))) % mod * (Pow(1 - Pow(3 , i - n + mod - 1) + mod , n) - 1) % mod ;
if(i & 1) ((ans -= tmp) += mod) %= mod;
else (ans += tmp) %= mod;
}
ans = -ans * Pow(3 , (n * n + 1) % (mod - 1)) % mod;
((ans -= 2ll * Pow(3,(ll)n * n % (mod - 1)) % mod * (Pow(1 - Pow(3,mod - n) + mod,n) - 1) % mod) += mod) %= mod;
std::cout << (ans + mod) % mod<< '\n';
return 0;
}
最后感谢 slongle 大佬的指导
Sky Full of Stars的更多相关文章
- CF997C Sky Full of Stars
CF997C Sky Full of Stars 计数好题 在Ta的博客查看 容斥式子:发现只要每个钦定方案的贡献都考虑到再配上容斥系数就是对的 O(n^2)->O(n) 把麻烦的i=0,j=0 ...
- codeforces 997C.Sky Full of Stars
题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\) ...
- Codeforces 997 C - Sky Full of Stars
C - Sky Full of Stars 思路: 容斥原理 题解:http://codeforces.com/blog/entry/60357 注意当i > 1 且 j > 1,是同一种 ...
- 【题解】CF997C Sky Full of Stars
[题解]CF997C Sky Full of Stars 为什么我的容斥原理入门题是这道题????????? \(Part-1\)正向考虑 直接考虑不合法合法的方案吧 所以我们设行有\(i\),列有\ ...
- [Codeforces 997C]Sky Full of Stars(排列组合+容斥原理)
[Codeforces 997C]Sky Full of Stars(排列组合+容斥原理) 题面 用3种颜色对\(n×n\)的格子染色,问至少有一行或一列只有一种颜色的方案数.\((n≤10^6)\) ...
- cf997C. Sky Full of Stars(组合数 容斥)
题意 题目链接 \(n \times n\)的网格,用三种颜色染色,问最后有一行/一列全都为同一种颜色的方案数 Sol Orz fjzzq 最后答案是这个 \[3^{n^2} - (3^n - 3)^ ...
- Codeforces997C Sky Full of Stars 【FMT】【组合数】
题目大意: 一个$n*n$的格子,每个格子由你填色,有三种允许填色的方法,问有一行或者一列相同的方案数. 题目分析: 标题的FMT是我吓人用的. 一行或一列的问题不好解决,转成它的反面,没有一行和一列 ...
- CF997C Sky Full of Stars 数论
正解:容斥 解题报告: 传送门! 两个方法,分别港下QAQ 先说第一种 首先要推出式子,就∑2*C(i,n)*(-1)i+1*3i*3n*n-n+3*∑∑(-1)i+j+1*C(i,n)*C(j,n) ...
- Codeforces.997C.Sky Full of Stars(容斥 计数)
题目链接 那场完整的Div2(Div1 ABC)在这儿.. \(Description\) 给定\(n(n\leq 10^6)\),用三种颜色染有\(n\times n\)个格子的矩形,求至少有一行或 ...
- codeforces997C Sky full of stars
传送门:http://codeforces.com/problemset/problem/997/C [题解] 注意在把$i=0$或$j=0$分开考虑的时候,3上面的指数应该是$n(n-j)+j$ 至 ...
随机推荐
- BigQuery 如何帮助大规模交付业务型企业提供物联网解决方案
[本文由 Cloud Ace 整理发布,Cloud Ace--谷歌云全球战略合作伙伴] (介绍:Leverege是一家软件公司,它使全球市场领导者能够快速且经济高效地构建企业物联网应用程序,以提供以数 ...
- Day22:数据库导入&分工&准备科研训练
今日完成的任务: 1.与组员共同排查jar包中的问题,发现是由于未导入数据库. 网上查询后在MySQL workbench中完成了导入导出(图中user数据库). 2.完成实验报告分工,我负责结论部分 ...
- css3中-webkit是什么意思
在CSS样式中很多样式名前缀都带有'-webkit-',但在CSS提供的API中查询不到这些样式名. 原因:CSS3中新增了一些属性,针对不同的浏览器,规定其内核名称让它们可以对这些新增属性进行解析. ...
- 强烈推荐的elasticsearch集群连接工具: elasticvue
个人感觉非常棒的es-cluster连接工具, 检查状态什么的, 一目了然, 支持中文超方便, 比elasticSearchHead好用多了. 安装方法打开微软浏览器edge-商城搜索-Elastic ...
- k8s入门_RC、RS、Deployment
RC 什么是RC: Replication Controller(副本控制器),RC能够保证pod在任意时间运行的副本数量,能够保证pod总是可用的. RC控制的pod的多个副本,每个副本都有独立的i ...
- @Service注解
@Service注解的作用之一就是添加在Service层做Bean实例化, 在遇到service层方法有多个实现时也可指定@Service(name=""),并在controlle ...
- Vmware workstation虚拟机导入到esxi虚拟机
VMware Workstation 与 ESXi 的主要区别 VMware Workstation是直接在windows系统下安装软件,安装后再在软件里面安装虚拟机,而ESXi相当于一个linux操 ...
- select remove option safari 兼容
select 移除某一 option 的 javascript 公司用的代码是 var ddlPrimaryResource = document.getElementById(ddlPrimaryR ...
- ubuntu添加新硬盘进行分区,并挂载到/home
ubuntu添加新硬盘,进行分区,并挂载到/home目录. 1.查看已有的磁盘,可以看到sdb还没有分区. > sudo fdisk -l 可以看到各个硬盘的设备名,一般以sda.sdb.sdc ...
- [ARC140D] One to One
个人思路: 一棵树也只有一个 \(a=-1\) 的点,所以可以把它看做一个点,但是要记录点的大小 \(sz_i\),即为这棵树的大小.如果本来就是一个点,那么大小为 \(1\). 状态:\(dp_{i ...