题目链接

容易想到容斥,但是很恶心,因为要对行和列都容斥,然后行+列又要容斥。。
于是得到\(O(nm\log)\)的做法。
就有70分了:

#include <cstdio>
#include <algorithm>
#define mod (1000000007)
#define Mod(x) (x>mod&&(x-=mod))//>=
#define ID(x,y) ((x-1)*m+y)
typedef long long LL;
const int N=1e5+5,M=1005;int n,m;namespace Subtask1
{int Cn[N],Cm[N],inv[N];inline LL FP(LL x,LL k){LL t=1;for(; k; k>>=1,x=x*x%mod)if(k&1) t=t*x%mod;return t;}LL Calc(LL n,LL m,int *C){LL res=0;for(int i=1; i<=n; ++i)if(i&1) res+=1ll*C[i]*FP(2,(n-i)*m)%mod;else res-=1ll*C[i]*FP(2,(n-i)*m)%mod;return (res%mod+mod)%mod;}LL Unique(LL n,LL m){LL res=0;for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j)if((i+j)&1) res+=1ll*Cn[i]*Cm[j]%mod*FP(2,(n-i)*(m-j))%mod;else res-=1ll*Cn[i]*Cm[j]%mod*FP(2,(n-i)*(m-j))%mod;return (res%mod+mod)%mod;}void Main(int n,int m){Cn[0]=Cm[0]=inv[1]=1;for(int i=2,l=std::max(n,m); i<=l; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;for(int i=1; i<=n; ++i) Cn[i]=1ll*Cn[i-1]*(n-i+1)%mod*inv[i]%mod;for(int i=1; i<=m; ++i) Cm[i]=1ll*Cm[i-1]*(m-i+1)%mod*inv[i]%mod;
//      printf("%I64d-%I64d-%I64d-%I64d\n",FP(2,1ll*n*m),Calc(n,m,Cn),Calc(m,n,Cm),Unique(n,m)-mod);printf("%I64d\n",((FP(2,1ll*n*m)-(Calc(n,m,Cn)+Calc(m,n,Cm)+Unique(n,m))%mod)%mod+mod)%mod);}
}
namespace TEST
{int Ans;bool col[1005][1005],vis[20000001];bool Checkr()//存在某行未染色的方案数 {for(int i=1; i<=n; ++i){for(int j=m; ~j; --j)if(!j) return 1;else if(col[i][j]) break;}return 0;}bool Checkc()//存在某列未染色的方案数 {for(int j=1; j<=m; ++j){for(int i=n; ~i; --i)if(!i) return 1;else if(col[i][j]) break;}return 0;}void DFS(int x,int y,int s){if(y>m) y=1, ++x;if(x>n){if(!vis[s]&&Checkc()){puts("\nOK:");for(int i=1; i<=n; ++i,putchar('\n'))for(int j=1; j<=m; ++j) printf("%d ",col[i][j]);++Ans, vis[s]=1;}return;}DFS(x,y+1,s), col[x][y]=1, DFS(x,y+1,s|(1<<ID(x,y)-1)), col[x][y]=0;}void Main(){DFS(1,1,0), printf("%d\n",Ans);}
}int main()
{freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);scanf("%d%d",&n,&m);if(m==1) return putchar('1'),0;
//  if(n==100000&&m==100000) return printf(""),0;//可能要跑2h。。没早打表
//  TEST::Main();if(n<=1000&&m<=1000||1ll*n*m<=1400000||1) {Subtask1::Main(n,m); return 0;}return 0;
}

其实只要保证列合法,只对行容斥就可以了。
当确定\(k\)行不染色时,每列合法的方案数是\(2^{n-k}-1\),然后\(m\)列的方案数就是它的\(m\)次方。

#include <cstdio>
#include <algorithm>
#define mod (1000000007)
typedef long long LL;
const int N=1e5+5;int inv[N],C[N];inline LL FP(LL x,LL k)
{x<0&&(x+=mod);LL t=1;for(; k; k>>=1,x=x*x%mod)if(k&1) t=t*x%mod;return t;
}
LL Calc(LL n,LL m)
{LL res=0;for(int i=0; i<=n; ++i)if(i&1) res-=1ll*C[i]*FP(FP(2,n-i)-1,m)%mod;else res+=1ll*C[i]*FP(FP(2,n-i)-1,m)%mod;return (res%mod+mod)%mod;
}int main()
{freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);int n,m; scanf("%d%d",&n,&m);C[0]=inv[1]=1;for(int i=2; i<=n; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;for(int i=1; i<=n; ++i) C[i]=1ll*C[i-1]*(n-i+1)%mod*inv[i]%mod;printf("%I64d\n",Calc(n,m));return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/9540065.html

五校联考R1 Day2T2 矩阵matrix(容斥)相关推荐

  1. 湖南长郡2021高考成绩查询时间,2021年湖南新高考六校、长郡十五校联考时间公布...

    2021年湖南新高考六校.长郡十五校联考时间公布 导读:距离2021年高考时间仅剩不到一百天,各个省份都的高三学子都进入紧张阶段.开始了各种模拟考试.2021届湖南省炎德英才大联考的考试时间也已经公布 ...

  2. 4246. 【五校联考6day2】san (Standard IO)

    4246. [五校联考6day2]san (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits D ...

  3. jzoj4230. 【五校联考4day1】淬炼神体(B组——Day3)

    jzoj4230. [五校联考4day1]淬炼神体 题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一 ...

  4. 【JZOJ4817】【NOIP2016提高A组五校联考4】square

    题目描述 输入 输出 样例输入 3 4 1 1 0 1 0 1 1 0 0 1 1 0 5 1 1 2 3 2 1 3 2 3 2 3 4 1 1 3 4 1 2 3 4 样例输出 1 1 1 2 2 ...

  5. 【五校联考3day2】B

    Description 小D是雅礼高一著名的神犇,在NOI同步赛中获得了满分的优异成绩,而全国没有任何其他人获得如此的成绩. 某天晚上,高一内部在讨论一道题目,然而包括小D之内的各种神犇都毫无头绪,这 ...

  6. 【五校联考2day1】补给站

    Description WYF为了保证他自己能够吃到足够多的牛排,来补充自己的脑力,所以他建了两个补给站,坐标分别为(ax,ay),(bx,by).他有n个休息地点,第i个休息地点的坐标是(xi,yi ...

  7. JZOJ 4238. 【五校联考5day2】纪念碑

    Description 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一个长为n,宽为m的矩形.它由n* m个1*1的 ...

  8. 【五校联考7day1】n染色

    Description WYF画了一个极为不规则的n边形,画面太美简直不看,没有任意两条边长度是相等的.因为形状太难看了,做他同桌的CWQ看不下去了,趁着WYF上厕所的时间准备用他书包里的m种颜色的彩 ...

  9. 【五校联考7day2】QYQ的图

    Description 给你一个n个点,m条边的无向图,每个点有一个非负的权值ci,现在你需要选择一些点,使得每一个点都满足: 如果这个点没有被选择,则与它有边相连的所有点都必须被选择. 问:满足上述 ...

  10. 【五校联考7day1】游戏

    Description WYF从小就爱乱顶,但是顶是会造成位移的.他之前水平有限,每次只能顶出k的位移,也就是从一个整点顶到另一个整点上.我们现在将之简化到数轴上,即从 一个整点可以顶到与自己相隔在k ...

最新文章

  1. Linux服务器查看占用IO较高的进程
  2. Blueprint简介-Android10.0编译系统(六)
  3. San介绍以及在百度APP的实践
  4. mysql 建表报错_mysql innodb 引擎 ,建表时报错:ERROR 1118 (42000)
  5. 建立一个普通方法无法打开查看和删除的文件夹
  6. ORA-00257: archiver error. Connect internal only, until freed——解决
  7. Python生成二维码-qrcode
  8. java object 数组_Java用Object实现数组队列的泛思与理解
  9. C++ STL中vector的内存机制和性能分析
  10. 【论文翻译】Image Super-Resolution Using Deep Convolutional Networks
  11. 自适应t分布与动态边界策略改进的算术优化算法
  12. 流程管理——免费BPM软件
  13. 探寻埋藏在心底的梦想,社科院与杜兰大学金融管理硕士项目伴你同行
  14. 07 - Nor Flash
  15. 怪物猎人GU-武器派生整理之双刀篇
  16. 水卡解码 ,pn532
  17. k线顶分型 python_K线的顶分型与底分型(实例图解)
  18. 基于Wemos D1避障WiFi小车及智能垃圾桶设计
  19. repo 命令的用法
  20. ad设置塞孔_干货丨PCB线路板过孔堵上,到底是什么学问?

热门文章

  1. 图神经网络(一)--综述
  2. mysql关键字及其用法_mysql的优化-explain
  3. 魔兽世界 8.1 服务器维护时间,魔兽世界8.1内容开放时间表介绍 8.1开放内容汇总介绍...
  4. Maven项目打包成可执行Jar文件
  5. 跟我学算法-集成算法
  6. 63.ExtJs事件(自定义事件、on、eventManager)示例
  7. MySQL集群(四)之keepalived实现mysql双主高可用
  8. Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager)
  9. Hbase单机安装及使用hbase shell进行简单操作
  10. Nginx web服务器搭建