2019.10.27 GMOJ6390 黑箱

纪中的联赛模拟

Description

在$wzq$面前摆着一个大箱子,箱子被划分成$n*m$个格子,箱子的侧面是透明的,箱子很高,所以$wzq$只能从侧面观察

现在,箱子中有些格子被不透明的物体塞满了,由于$wzq$只能从侧面看,所以他只知道又哪些行和列又不透明的格子,求有多少种方案满足$wzq$看到的情况,对$ 998244353 $取模

$wzq$对$OI$的造诣太深了,但是他懒得算,所以找到了你这个工具人

对于前$10\%$的数据,保证$1<=n,m<=5$

对于前$30\%$的数据,保证$1<=n,m<=10$

对于前$50\%$的数据,保证$1<=n,m<=500$

对于前$70\%$的数据,保证$1<=n,m<=5000$

对于$100\%$的数据,保证$1<=n,m<=10^6$

[只有图片题面x]

sol:

因为一些原因早上少了快一个半小时的比赛时间……然后又打了半小时东方CB233

结果到结束就只切了这个垃圾签到题==[我太菜了]

考虑转化一下模型

题目就是给定$n‘$[$B$的个数]个不为空的二进制数,问又多少种方案能使得或和的答案是一个给定的二进制数$ M $

这东西的模型上次在CF见过来着==[然后加强了一堆限制 变成了一个数据结构题]

因为是二进制,显然的拆位考虑

对于不考虑不为空限制的情况下 答案显然为$(2^{n}-1)^{m}$[每一位二进制数都是随机填 但是不全为空]

考虑加入限制,也是一个显然的容斥,行的限制可以化简为原问题的一个子问题 答案就是$\sum (-1)^iC_{n‘}^{i}*(2^{n-i}-1)^m$

然后就做完了== 不愧是简单签到题.jpg[写完就继续去颓东方CB了233]

总效率 $O(n log n)$

Code

#include <bits/stdc++.h>
using namespace std;
const long long fish=998244353;
int N,M;long long fac[1000005],inv[1000005];
long long Pow(int x,int y){
    long long ans=1;
    for (;y;y>>=1,x=1ll*x*1ll*x%fish)
        if (y&1) ans=1ll*ans*1ll*x%fish;
    return ans;
}
void Pre(){
    fac[0]=1;
    for (int i=1;i<=1000000;i++)
        fac[i]=1ll*fac[i-1]*1ll*i%fish;
    inv[1000000]=Pow(fac[1000000],fish-2);
    for (int i=999999;i>=0;i--){
        inv[i]=1ll*inv[i+1]*1ll*(i+1)%fish;
    }
}
int C(int n,int r){
    return 1ll*fac[n]*1ll*inv[r]%fish*inv[n-r]%fish;
}
int main(){
    scanf("%d%d",&N,&M);
    Pre();
    int cnt1=0,cnt=0,cnt2=0;
    for (int i=1;i<=N;i++){
        char c;
        cin>>c;
        if (c==‘B‘) cnt2++;
    }
    for (int i=1;i<=M;i++){
        char c;
        cin>>c;
        if (c==‘B‘) cnt1++;
    }
    long long ans=Pow(Pow(2,cnt2)-1,cnt1);
    long long xs=-1;
    for (int i=1;i<=cnt2;i++){
        ans=(ans+1ll*xs*1ll*C(cnt2,i)%fish*1ll*Pow(Pow(2,cnt2-i)-1,cnt1)%fish)%fish;
        if (ans<0) ans=(ans+fish)%fish;
        xs=-xs;
    }
    cout<<ans;
    return 0;
}

原文地址:https://www.cnblogs.com/si--nian/p/11747682.html

时间: 2024-11-06 07:41:03

2019.10.27 GMOJ6390 黑箱的相关文章

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

2019/10/27 TZOJ

1001 Gaussian Prime http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=3798 .......................................我是真的一言难尽 1002 Sum of Factorials http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=2696

2019.10.27

交换机lDps 路由机lp 组件R0uter 传输控制协议www 互联网协议COmp0nent 万维网TCP 人侵检测和防御系统R0uter 超文本输控制协议ⅠDS 电子邮件Netw0rKsαfety 文件传输协议FⅰrewαⅡ 防火墙OSl 人侵检测系统FTp 网络安全0Sl 开庭系统互联E一mαil Ch00Sethepr0perwOrdst0fiⅡⅰntheblαnKs ALANⅰsuSedforC0mmuni(αtiO川sinasMa″C0mmun:tyⅰη~hⅰCnresonrCes,

【2019.10.27】

题目 题解 T1是道睿智题,理解题意花了20min,出题人的样例给了相当没给,用自己的话翻译了下题面后发现没注意到a1也可以更改,于是就想到了读入时线型预处理下每组等差数列,结构体记下末尾的序号.编号和数列长度:再枚举数列,合并算len,ans就是max(ans,ans+len): #include<bits/stdc++.h> #define ri register int #define ll long long #define For(i,l,r) for(ri i=l;i<=r;

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

一周随笔--15.10.27

一周新知识点记录(15.10.27) 一.不规则按钮OBShapedButton 常规按钮都是一个矩形区域,即使设置了按钮layer的cornerRadious,能响应点击事件的依旧是整个矩形区域. OBShapedButton是开源的第三方库,直接继承自UIButton,直接使用即可.它的响应区域只限定在button的图片或者背景图片区域,周围空出的区域无法响应. 二.sendActionsForControlEvents UIButton的实例方法,通过代码手动发送按钮的点击事件触发按钮的响

背水一战 Windows 10 (27) - 控件(文本类): TextBlock

原文:背水一战 Windows 10 (27) - 控件(文本类): TextBlock [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例1.TextBlock 的示例 1Controls/TextControl/TextBlockDemo1.xaml <Page x:Class="Windows10.Controls.TextControl.TextBlockDemo1" xmlns="http://

2019.08.27学习整理

2019.08.27学习整理 什么是继承 是一种新建类的方式,继承了一个类,类中的属性和方法就在子类中 父类/基类 子类/派生类 新式类:只要继承了object类,就是新式类,在python3中,默认继承object类 -Python3中:默认继承object class A: pass -python2中,需要显示的指定继承object --经典类:没有继承object的类,就是经典类 -python3中没有经典类 -python2中才有 利用继承减少代码冗余 #继承重用父类方法方式一:指名道

2019.10.19初赛滚粗后的日子

写在故事的前面的话 人生中第一次考CSP-S,然后考得有点自闭,我想我写这篇blog并不是想要说AFO之类的话,相反,我觉得自己应该继续坚持下去的丫子.自己以前欠了很多知识,以前是自己初中时期的不认真,现在我就把自己当成是高一才学OI的萌新,忘记过去对自己的一些期望,重新开始自己的OI生涯. 2019.10.19 今天在自闭完了之后还是逐渐接受了初赛没有多大几率过的事实,开始复习起之前学的东西.首先,今天开始复习树形DP(入门).list如下: Park visit (已过) 没有上司的舞会 (