其他题目题解:

2017 Multi-University Training Contest - Team 7:1005. Euler theorem

2017 Multi-University Training Contest - Team 7:1011. Kolakoski

2017 Multi-University Training Contest - Team 7:1008. Hard challenge

2017 Multi-University Training Contest - Team 7:1002. Build a tree

2017 Multi-University Training Contest - Team 7:1010. Just do it

题意:有一个n*m棋盘,每个格子都有一种颜色,红色蓝色或白色,你要将所有的白色棋子染成另外两种颜色,求有多少种染色方案使得最后所有长和宽都为偶数的子棋盘红色格子和蓝色格子数量都相等

其实只要满足所有2*2的子棋盘红色格子数量和蓝色格子数量都为2就好了

将所有行+列为偶数的格子反色(蓝变红,红变蓝)那么新的棋盘如果合法,就必须满足所有的列要不全蓝要不全红,或者所有的行要不全蓝要不全红

这样问题就简单了,反色之后

遍历一次所有的行,看是否有一行上既有蓝色又有红色,如果有,就停止检测,直接遍历列

否则计算有多少行全是白色的,答案加上2^x,x为行数

然后遍历一次所有的列,看是否有一列上既有蓝色又有红色,如果有,就结束,

否则计算有多少列全是白色的,答案再加上2^x,x为列数

注意如果可以全红或全蓝那么会被算上两次,记得去重

#include<stdio.h>
#define LL long long
#define mod 998244353
char str[1005];
LL a[1005][1005], er[1005] = {1,2};
int main(void)
{LL T, n, m, i, j, p, q, B, R, yb, yr;for(i=2;i<=1000;i++)er[i] = er[i-1]*2%mod;scanf("%lld", &T);while(T--){scanf("%lld%lld", &n, &m);p = q = 0, yb = yr = 1;for(i=1;i<=n;i++){scanf("%s", str+1);for(j=1;j<=m;j++){if(str[j]=='R')  a[i][j] = 1;else if(str[j]=='B')  a[i][j] = 0;else  a[i][j] = -1;if((i+j)%2 && a[i][j]!=-1)a[i][j] ^= 1;}}for(i=1;i<=n;i++){R = B = 0;for(j=1;j<=m;j++){if(a[i][j]==1)R = 1, yb = 0;else if(a[i][j]==0)B = 1, yr = 0;}if(R==B && B==0)p++;else if(R==B && B==1){p = -1;break;}}for(j=1;j<=m;j++){R = B = 0;for(i=1;i<=n;i++){if(a[i][j]==1)R = 1;else if(a[i][j]==0)B = 1;}if(R==B && B==0)q++;else if(R==B && B==1){q = -1;break;}}if(p==-1 && q==-1)printf("0\n");else if(p!=-1 && q==-1)printf("%lld\n", er[p]);else if(p==-1 && q!=-1)printf("%lld\n", er[q]);elseprintf("%lld\n", (er[p]+er[q]-yb-yr+mod)%mod);}return 0;
}

2017 Multi-University Training Contest - Team 7:1003. Color the chessboard(...)相关推荐

  1. 2017 Multi-University Training Contest - Team 7:1002. Build a tree(递归)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  2. 2017 Multi-University Training Contest - Team 7:1010. Just do it(组合数?)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  3. 2017 Multi-University Training Contest - Team 3:1004. Kanade's trio(01字典树)

    感觉很多时候字典树都是这种题的万能解 (具体规则or什么是字典树:http://blog.csdn.net/jaihk662/article/details/53930927) 建立两棵01字典树,对 ...

  4. 2017 Multi-University Training Contest - Team 5:1001. Rikka with Candies(手写bitset)

    题意: 给你两个数组A,B,数组中每个数字范围在[1, 50000]内且不重复,q次询问,每次一个值x,问有多少对(a, b),满足 a%b==x,a∈A,b∈B 实际上这题正解还是n²的暴力 思路很 ...

  5. 2017 Multi-University Training Contest - Team 4:1003. Counting Divisors(积性函数)

    公式: 上面的a|b表示a是b的约数,ai是每个质因数p分解后的项数 枚举每个x(l<=x<=r) 对于每个数暴力分解小于sqrt(r)的质数就好了, 因为大于sqrt(r)的质数最多只有 ...

  6. 2017 Multi-University Training Contest - Team 7:1008. Hard challenge(模拟)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  7. 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1005. Euler theorem 2017 Multi-University Tr ...

  8. 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)

    其他题目题解: 2017 Multi-University Training Contest - Team 7:1003. Color the chessboard 2017 Multi-Univer ...

  9. 2017 Multi-University Training Contest - Team 4:1002. Classic Quotation(KMP+DP)

    题意:给你两个字符串S和T,每次询问(L, R)求出所有满足x<=L, y>=R的(x, y),S串的前x个字符和后y个字符接在一起后包含字符串T的个数之和 说实话..这题会做题解也还是看 ...

最新文章

  1. C语言经典例74-连接两个链表
  2. 生产环境常见的HTTP状态码列表
  3. c++指针引用导出文件
  4. 引用一个项目作为library的操作步骤---开发中遇到的问题(二)
  5. 树莓派支持uvi协议吗_树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi)...
  6. 【POJ - 1486】Sorting Slides(思维建图,二分图求必须边,关建边,图论)
  7. Java 创建线程的三种方式
  8. 搜索——滑雪(poj1088)
  9. python大众点评霸王餐_不收藏肯定后悔!大众点评前员工告诉你,如何利用点评APP吃霸王餐!...
  10. 情人节程序员用HTML网页表白【时光不老,我们不散love520】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  11. PRD产品需求文档原型模版 Axure RP格式
  12. [算法]直线与圆的交点程序设计
  13. java根据word模板导出word文件
  14. iTunes更改备份保存路径
  15. 豆瓣读书isbn 查询
  16. 蝙蝠聊天软件显示无法连接服务器失败,蝙蝠聊天软件为什么没有来信息提示音?...
  17. 和菜鸟一起学产品之交互式设计
  18. import_meta_graph 和 replicate_model_fn
  19. KTV项目之3个ListView的跳转和加载歌手图片
  20. 【实例间对比】ICE: Inter-instance Contrastive Encoding for Unsupervised Person Re-identification论文笔记

热门文章

  1. python学了真的很有用吗-会Python的人工作不会太差?编程课真的有必要学吗?
  2. python基础教程免费下载-Python基础教程(第2版)
  3. 通过设置proxyTable实现调用接口跨域
  4. 导入php项目_商业裂变,之项目技术实战(第九节:程序框架的安装)
  5. Vue自定义组件封装及使用Excel
  6. 内置对象 API Math对象、Data对象、Array对象、String对象
  7. 【最短路径问题】计蒜客:圣诞树
  8. 【python 笔记】集合类型详解
  9. UHDTV(超高清电视) 的帧率规格:120fps
  10. 如何把catia完全卸载干净_catia软件无法卸载怎么办?彻底删除catia等三维软件的方法...