Codeforces.997C.Sky Full of Stars(容斥 计数)
\(Description\)
给定\(n(n\leq 10^6)\),用三种颜色染有\(n\times n\)个格子的矩形,求至少有一行或一列格子同色的方案数。
\(Solution\)
求恰好有多少行/列满足同色不好求,但如果某几行/列已经确定同色,这些行/列外任意选择,即至少多少行/列满足,那么很好求。
容斥。设\(f(i,j)\)表示至少有\(i\)行\(j\)列同色的方案数,则\(ans=\sum_{0\leq i\leq n}\sum_{0\leq j\leq n}\left[i+j>0\right]C_n^iC_n^j(-1)^{i+j+1}f(i,j)\)
当\(i>0\&\&j>0\)时,可以发现这\(i\)行\(j\)列都是同色的,即\(f(i,j)=3\times 3^{(n-i)(n-j)}\)
而当\(i=0||j=0\)时,假设\(i=0\),那么这\(j\)列间可任意组合,即\(f(0,j)=3^j\times 3^{n\times(n-j)}\)
后者可以\(O(n\log n)\)计算,而前者至少需要\(O(n^2)\)。
再化式子,令\(i=n-i,j=n-j\),则\(i,j\neq 0\)时,$$\begin{aligned}ans&=3\sum_{i=0}{n-1}\sum_{j=0}{n-1}C_n{n-i}C_n{n-j}(-1){2n-i-j-1}3{ij}\&=3\sum_{i=0}{n-1}\sum_{j=0}{n-1}C_niC_nj(-1){i+j+1}3{ij}\end{aligned}$$
把\(i\)提出来,看能不能直接算\(j\):$$\begin{aligned}ans&=3\sum_{i=0}{n-1}C_ni(-1){i+1}\sum_{j=0}{n-1}C_nj(-1)j(3i)j\&=3\sum_{i=0}{n-1}C_ni(-1){i+1}\sum_{j=0}{n-1}C_nj(-3i)^j\end{aligned}$$
由二项式定理\((a+b)^n=\sum_{k=0}^nC_n^ka^kb^{n-k}\),\(j\)的那一项可以直接化掉:$$ans=3\sum_{i=0}{n-1}C_ni(-1){i+1}\left[(1+(-3i))n-(-3i)^n\right]$$
于是就可以\(O(n\log n)\)计算了。
还有一个社会人的做法:https://www.cnblogs.com/Menhera/p/9277516.html
//1107ms 7700KB
#include <cstdio>
#include <algorithm>
#define mod (998244353)
typedef long long LL;
const int N=1e6+7;
int C[N],inv[N];
inline LL FP(LL x,int k)
{
LL t=1;
for(; k; k>>=1,x=x*x%mod)
if(k&1) t=t*x%mod;
return t;
}
int main()
{
int n; scanf("%d",&n);
LL ans1=0; C[0]=inv[1]=1;
for(int i=1; i<=n; ++i)
{
if(i>1) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
C[i]=1ll*(n-i+1)*C[i-1]%mod*inv[i]%mod;
if(i&1) ans1+=1ll*C[i]*FP(3,(1ll*n*(n-i)+i)%(mod-1))%mod;//a^{\varphi(p)}=1(\mod p)
else ans1-=1ll*C[i]*FP(3,(1ll*n*(n-i)+i)%(mod-1))%mod;
}
ans1=2ll*ans1%mod;
LL ans2=0;
for(int i=0,pw3=1; i<n; ++i)
{
if(i&1) ans2+=1ll*C[i]*(FP(1+mod-pw3,n)-FP(mod-pw3,n))%mod;
else ans2-=1ll*C[i]*(FP(1+mod-pw3,n)-FP(mod-pw3,n))%mod;
pw3=3ll*pw3%mod;
}
printf("%I64d\n",((ans1+3ll*ans2)%mod+mod)%mod);
return 0;
}
Codeforces.997C.Sky Full of Stars(容斥 计数)的更多相关文章
- codeforces 997C.Sky Full of Stars
题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\) ...
- [Codeforces 997C]Sky Full of Stars(排列组合+容斥原理)
[Codeforces 997C]Sky Full of Stars(排列组合+容斥原理) 题面 用3种颜色对\(n×n\)的格子染色,问至少有一行或一列只有一种颜色的方案数.\((n≤10^6)\) ...
- Codeforces 1553I - Stairs(分治 NTT+容斥)
Codeforces 题面传送门 & 洛谷题面传送门 u1s1 感觉这道题放到 D1+D2 里作为 5250 分的 I 有点偏简单了吧 首先一件非常显然的事情是,如果我们已知了排列对应的阶梯序 ...
- codeforces B. Friends and Presents(二分+容斥)
题意:从1....v这些数中找到c1个数不能被x整除,c2个数不能被y整除! 并且这c1个数和这c2个数没有相同的!给定c1, c2, x, y, 求最小的v的值! 思路: 二分+容斥,二分找到v的值 ...
- Codeforces 439E Devu and Birthday Celebration 容斥
Devu and Birthday Celebration 我们发现不合法的整除因子在 m 的因子里面, 然后枚举m的因子暴力容斥, 或者用莫比乌斯系数容斥. #include<bits/std ...
- Codeforces 920G List Of Integers 二分 + 容斥
题目链接 题意 给定 \(x,p,k\),求大于 \(x\) 的第 \(k\) 个与 \(p\) 互质的数. 思路 参考 蒟蒻JHY. 二分答案 \(y\),再去 \(check\) 在 \([x,y ...
- Codeforces 548E(莫反、容斥)
转化为质数域上的操作,如果用莫反的话,记录因数的cnt. 其实莫反的推式子最后和容斥做法殊途同归了,容斥的系数就是莫比乌斯函数. const int maxn = 2e5 + 5, maxa = 5e ...
- Codeforces Round 450 D 隔板法+容斥
题意: Count the number of distinct sequences a1, a2, ..., an (1 ≤ ai) consisting of positive integers ...
- 数学(容斥计数):LNOI 2016 方
Description 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一个有N行M列的方格图上,图上一共有(N+1)×(M+1) ...
随机推荐
- 模拟生成环境的MySQL安装方法-通用二进制方式安装
模拟生成环境的MySQL安装方法-通用二进制方式安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.并发响应用户请求的网络IO模型 1>.单进程 特点:一个进程响应一个请 ...
- 将Sql查询语句获取的数据插入到List列表里面
Sql查询语句获取的数据是分格式的,我们还用SqlDataReader来做,然后用IDataReader来接收读取,以下是代码: //我想查询一个用户表的信息,该用户有姓名,密码,信息三列 //1.定 ...
- python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)
################################################################## # PUBLIC METHODS THAT ALTER ATTRI ...
- 微软官网给出CSS选择器支持列表
CSS Compatibility and Internet Explorer 这是在 @司徒正美 博客里看到的,所以搬到自己博客,收藏下..正如司徒兄所说,微软太狡滑了,如果把不支持的属性用红色标示 ...
- html5 canvas文本处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [转载]Windows 8 VHD 概述与使用
http://www.cnblogs.com/tonycody/archive/2012/11/30/2796858.html
- Fiddler抓取HTTPS最全(强)攻略
本文来自于柠檬班49期学员superman童鞋的学习笔记.希望对同样是测试萌新的你有帮助,如果觉得好,可以点个赞噢~ 对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler.可是在初学时, ...
- mysql 1045 access denied for user 解决方法
提示:1045 access denied for user 'root'@'localhost' using password yes方法一: # /etc/init.d/mysql stop # ...
- [转]CMake cache
CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数). CMakeLists.txt 中通过 set(... CACHE . ...
- order by 字段自动填写脚本
新版 firefox 中的 hackbar 没有 order by 字段填写, 所以就有了这个: =begin pod sql注入中自动输出order by 的位数 =end pod sub MAIN ...