【题解】CF997C Sky Full of Stars

时间:2022-09-16 12:39:03

【题解】CF997C Sky Full of Stars

为什么我的容斥原理入门题是这道题?????????

\(Part-1\)正向考虑

直接考虑不合法合法的方案吧

所以我们设行有\(i\),列有\(j\)有是不同的颜色

所以分这几种情况讨论:

\[i\not=0,j\not=0
\\
i=j=0
\\
ij=0,i+j\not=0
\]

考虑到\(i=j=0​\)对答案没有贡献,所以我们考虑第一式和第三式吧

第三式简单一点,情况就是这样的:

【题解】CF997C Sky Full of Stars

方案数还是比较显然的(我说显然是因为是可以通过我努力思考得到,不是我可以秒杀...)

还要试推算一个容斥系数,最终就是

\[x_1= 2\times\Sigma_{i=1}^n (-1)^i C_n^i \times 3^i\times 3^{n(n-i)}
\]

第二式,情况就是这样的:

【题解】CF997C Sky Full of Stars

这种情况下,确定了一种就确定了所有颜色,枚举\(i,j​\)吧

\[x=\Sigma_{i=1}^n\Sigma_{j=1}^n (-1)^{j+i-1}3C_n^iC_n^j3^{(n-i)(n-j)}
\]

然而我们需要\(O(nlogn)\)所以我们考虑对式子变形一下,把所有(部分)\(i\)提出来

\[x=\Sigma_iC_n^i(-1)^{i-1}\Sigma_{j=1}^n C_n^j3^{(n-i)(n-j)}(-1)^j
\]

把\(j\)的拿出来二项式定理化一下,有些技巧性。

\[\Sigma_{j=1}^n C_n^j3^{(n-i)(n-j)}(-1)^j=-3^{n(n-i)}+\Sigma_{j=0}^n C_n^j3^{(n-i)(n-j)}(-1)^j
\\
=-3^{n(n-i)}+\Sigma_{j=0}^n C_n^j(3^{n-i})^{n-j}(-1)^j
\\
=-3^{n(n-i)}+(3^{n-i}-1)^n
\]

所以

\[x_2= \Sigma C_n^i(-1)^{i-1}(-3^{n(n-i)}+(3^{n-i}-1)^n)
\]

于是答案就是

\[x_1+x_2= 2\times\Sigma_{i=1}^n (-1)^i C_n^i \times 3^i\times 3^{n(n-i)}+\Sigma_{i=1}^n C_n^i(-1)^{i-1}(-3^{n(n-i)}+(3^{n-i}-1)^n)
\]

复杂度\(O(nlogn)\)

呼呼呼 好难QAQ

\(part-2\)反向考虑

【题解】CF997C Sky Full of Stars

直接蒯了,有没有发现形式很相似?数学真奇妙hhh

给\(2​\)号代码吧

#include<bits/stdc++.h>
using namespace std;typedef long long ll; #define RP(t,a,b) for(register int t=(a),edd=(b);t<=edd;++t)
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;--t)
#define ERP(t,a) for(register int t=head[a];t;t=e[t].nx)
#define int long long
const int mod=998244353;
inline int ksm(int base,int p){register int ret=1;base%=mod;
for(register int t=p;t;t>>=1,base*=base,base%=mod)if(t&1) ret*=base,ret%=mod; return ret%mod;
}
const int maxn=1e6+5;
int fac[maxn];
int inv[maxn];
int ans;
int n;
inline int C(int n,int m){return (fac[n]*inv[m]%mod)*inv[n-m]%mod;} signed main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
cin>>n;
inv[0]=fac[0]=1;
RP(t,1,n) fac[t]=fac[t-1]*t%mod,inv[t]=inv[t-1]*ksm(t,mod-2LL)%mod;
ans=ksm(3,n*n)%mod;
ans=(ans-ksm(ksm(3,n)-3LL+mod,n)+mod)%mod;
RP(t,1,n){
register int q=C(n,t)*(3LL*ksm(ksm(3,n-t)-1LL,n)%mod+(ksm(3,n*(n-t))*((ksm(3,t)-3LL+mod)%mod))%mod)%mod;
if(t&1) ans=(ans+q)%mod;
else ans=((ans-q)%mod+mod)%mod;
}
ans=(ans%mod+mod)%mod;
cout<<ans<<endl;
}

【题解】CF997C Sky Full of Stars的更多相关文章

  1. CF997C Sky Full of Stars

    CF997C Sky Full of Stars 计数好题 在Ta的博客查看 容斥式子:发现只要每个钦定方案的贡献都考虑到再配上容斥系数就是对的 O(n^2)->O(n) 把麻烦的i=0,j=0 ...

  2. 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) ...

  3. cf997C&period; Sky Full of Stars&lpar;组合数 容斥&rpar;

    题意 题目链接 \(n \times n\)的网格,用三种颜色染色,问最后有一行/一列全都为同一种颜色的方案数 Sol Orz fjzzq 最后答案是这个 \[3^{n^2} - (3^n - 3)^ ...

  4. Codeforces 997 C - Sky Full of Stars

    C - Sky Full of Stars 思路: 容斥原理 题解:http://codeforces.com/blog/entry/60357 注意当i > 1 且 j > 1,是同一种 ...

  5. &lbrack;CF997C&rsqb;Sky Full of Stars&lowbar;二项式反演&lowbar;等比数列&lowbar;容斥原理

    Sky Full of Stars 题目链接:http://codeforces.com/problemset/problem/997/C 数据范围:略. 题解: 首先考虑拟对象,如果至少有一行完全相 ...

  6. codeforces 997C&period;Sky Full of Stars

    题目链接:codeforces 997C.Sky Full of Stars 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记\(f(i,j)\)为该方阵中至少有\(i\)行和\(j\) ...

  7. &lbrack;Codeforces 997C&rsqb;Sky Full of Stars&lpar;排列组合&plus;容斥原理&rpar;

    [Codeforces 997C]Sky Full of Stars(排列组合+容斥原理) 题面 用3种颜色对\(n×n\)的格子染色,问至少有一行或一列只有一种颜色的方案数.\((n≤10^6)\) ...

  8. codeforces997C Sky full of stars

    传送门:http://codeforces.com/problemset/problem/997/C [题解] 注意在把$i=0$或$j=0$分开考虑的时候,3上面的指数应该是$n(n-j)+j$ 至 ...

  9. 题解报告:hdu 1541 Stars(经典BIT)

    Problem Description Astronomers often examine star maps where stars are represented by points on a p ...

随机推荐

  1. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  2. Codefroces 750C:New Year and Rating(思维)

    http://codeforces.com/contest/750/problem/C 题意:有n场比赛,每场比赛有一个c,代表比赛结束后分数的增长情况,有一个d,代表这场比赛在div1或者div2打 ...

  3. tomcat7 - 烫手山芋之热部署

    tomcat7部署,项目发布有很多种方式 1. 增量发布,把修改过得那些文件手动上传至tomcat,*.class *.xml 等等,这样的缺点非常大,需要断开tomcat,记住那些你修改过得文件,很 ...

  4. css 内联元素inline 行框全解

    首先看一篇文章: CSS框模型:一切皆为框 — 从行框说起 一 行框 看图说话 上图代表了框模型中的行框.line-height 属性设置行间的距离(行高).该属性会影响行框的布局.在应用到一个块级元 ...

  5. MyBatis之五:动态sql语句

    在mybatis 3 或以上的版本提供了4类标签,分别是:if,choose(when,otherwise),rim(where,set),foreach.接下来将分别介绍这几种标签的具体用法,映射x ...

  6. Ubuntu下mount命令的好用处

    mount,也就是挂载.如果是让电脑自己挂载Windows的分区,也就是你直接在文件管理器里点击那些Windows的盘符,系统就会帮助你自动挂载,不过其挂载后的名称太长太复杂,不方便终端操作.所以还是 ...

  7. Oracle数据库设置Scott登录

    Oracle数据库Scott登录 在安装数据库时,用户登录选项中,Scott用户默认是未解锁的. 用户名填写as sysdba:密码是原来设置的,登录进去,新建SQL窗口,输入命令: alert us ...

  8. Kafka 部署指南-好久没有更新博客了

    最近到了一家新公司,很多全新技术栈要理解.每天都在看各类 English Offcial Document,我的宗旨是我既然看懂了,就写下来分享,这是第一篇. 基本需求: 1.已有 zookeeper ...

  9. vs2010 静态使用 opencv 2&period;46 库

    下载opencv2.46的库,假设解压到OpenCV246,设置如下: 在工程的c++的include目录下添加:OpenCV246\opencv\build\include 在工程的c++的lib目 ...

  10. hadoop&lowbar;exporter

    1.下载安装go 1.下载二进制包:go1.4.linux-amd64.tar.gz. 2.将下载的二进制包解压至 /usr/local目录. tar -C /usr/local -xzf go1.4 ...