CF1511E Colorings and Dominoes
考虑计数拆开贡献。
因为在一个方案中一个格子最多只会贡献一次,那么不妨反过来求这个格子贡献了多少次。
然后发现,行列独立,那么我们单独计算红蓝色,即可。
一个偶数块贡献当且仅当前面也是偶数块。
然后显然其他不在同一行/同一列的块就直接随便乱取就行了。
#include<iostream>
#include<cstdio>
#include<vector>
#define N 300005
#define mod 998244353
#define ll long long
int n,m;
char a[N];
int sum = 0;
std::vector<int>v[N];
int f[N];
inline ll pow(ll a,ll b){
ll ans = 1;
while(b){
if(b & 1)ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
}
ll ans = 0;
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;++i){
scanf("%s",a + 1);
for(int j = 1;j <= m;++j)
sum += (a[j] == 'o'),v[i].push_back(a[j] == 'o');
}
f[2] = f[3] = 1;
for(int i = 4;i <= sum;++i)
f[i] = (pow(2,i - 3) + f[i - 2]) % mod;
for(int i = 2;i <= sum;++i)
f[i] = f[i] * pow(2,sum - i) % mod;
int now = 0;//当前段长度
for(int i = 1;i <= n;++i,now = 0)
for(int j = 0;j < m;++j){
now = now * v[i][j] + v[i][j];
ans = (ans + f[now]) % mod;
}
now = 0;
for(int j = 0;j < m;++j,now = 0)
for(int i = 1;i <= n;++i){
now = now * v[i][j] + v[i][j];
ans = (ans + f[now]) % mod;
}
std::cout<<ans<<std::endl;
}
CF1511E Colorings and Dominoes的更多相关文章
- POJ1717 Dominoes[背包DP]
Dominoes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6731 Accepted: 2234 Descript ...
- 2016 Multi-University Training Contest 1 I. Solid Dominoes Tilings
Solid Dominoes Tilings Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- uva 11270 - Tiling Dominoes(插头dp)
题目链接:uva 11270 - Tiling Dominoes 题目大意:用1∗2木块将给出的n∗m大小的矩阵填满的方法总数. 解题思路:插头dp的裸题,dp[i][s]表示第i块位置.而且该位置相 ...
- codeforces 342D Xenia and Dominoes(状压dp+容斥)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud D. Xenia and Dominoes Xenia likes puzzles ...
- ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】
称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...
- AtCoder Beginner Contest 071 D - Coloring Dominoes
Problem Statement We have a board with a 2×N grid. Snuke covered the board with N dominoes without o ...
- [LeetCode] Push Dominoes 推多米诺骨牌
There are N dominoes in a line, and we place each domino vertically upright. In the beginning, we si ...
- [Swift]LeetCode838. 推多米诺 | Push Dominoes
There are N dominoes in a line, and we place each domino vertically upright. In the beginning, we si ...
- 6993: Dominoes(纯bfs)
题目描述Orz likes to play dominoes. Now giving an n*m chessboard and k dominoes whose size are 1*2, Orz ...
随机推荐
- 提升使用Linux效率的小操作
提升使用Linux效率的小操作 保存更新? 本文记录了个人在使用Linux时觉得好用的一些快捷方式/功能: 为那种知道了能提高效率,但是的不知道也并没有影响的操作. 历史命令 该操作用于快速查看已使用 ...
- 占位符,SQL注入?
这两天在上课时被同学拿了一段代码问我,这段代码有什么问题,我看了一会说:Connection和PreparedStatement都没关.他说不止这方面的问题,还有sql注入的问题,我就坚决的说使用了占 ...
- UltraSoft - Beta - Scrum Meeting 9
Date: May 25th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 记录Scrum Meeting Liuzh 前端 用户忘记密码界面初稿完成 Kkk ...
- BUAA软件工程结对项目作业
BUAA软件工程结对项目 小组成员:16005001,17373192 1.教学班级和项目地址 项目 内容 这个作业属于哪个课程 博客园班级连接 这个作业的要求在哪里 结对项目作业 我在这个课程的目标 ...
- mipi csi接口,1条lane支持多少像素,200w像素需要几条lane,为什么,怎么计算出来的?谢谢!
按帧频FRAME=60HZ, 分辨率480*800来计算;以WVGA 显示分辨率,24BIT图片,60幁为例,在理想状态下(未包含RGB信号前后肩宽度),总传输速率最小为:480*800*8BIT*3 ...
- 公众号H5页面接入微信登录流程
公众号H5页面接入微信登录流程 源码地址 https://gitee.com/szxio/h5_weixin 起步 首先创建一个项目,我们采用uni-app来作为我们的前端框架 环境安装 全局安装vu ...
- 注意 .NET string.GetHashCode() 用法
需求案例:需要把字符串存入数据库,并且要求数据库中不能有重复的字符串,由此就引出了将字符串hash成特定的hash值,依靠查询hash值是否重复来判断字符串是否重复.这样做的好处在于查询重复字符串的代 ...
- HttpContext.Current.Request.Url 地址:获取域名
假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli 协议名----http://域名 ---- www.test.com站 ...
- DeWeb 电脑和手机动态适配
DeWeb 做多平台适配很方便! 多平台适配代码在OnMouseUp中. X,Y分别表示当前设备的Width/Height: Button : mbLeft : 屏幕纵向, mbRight:屏幕横向: ...
- Python正则表达式使用小记
最近做Python课实验发现正则表达式和它在py中的的标准库re有很多能多琢磨一下的点,遂决定写成一篇小记,以后想复习能再来看看. 名词 因为不同文献书籍对正则表达式的描述有差别,我在这里列出一下我已 ...