2017-08-25 15:32:14

writer:pprp

题目:

B. Rectangles
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given n × m table. Each cell of the table is colored white or black. Find the number of non-empty sets of cells such that:

  1. All cells in a set have the same color.
  2. Every two cells in a set share row or column.
Input

The first line of input contains integers n and m (1 ≤ n, m ≤ 50) — the number of rows and the number of columns correspondingly.

The next n lines of input contain descriptions of rows. There are m integers, separated by spaces, in each line. The number equals 0 if the corresponding cell is colored white and equals 1 if the corresponding cell is colored black.

Output

Output single integer  — the number of non-empty sets from the problem description.

Examples
input
1 1
0
output
1
input
2 3
1 0 1
0 1 0
output
8
Note

In the second example, there are six one-element sets. Additionally, there are two two-element sets, the first one consists of the first and the third cells of the first row, the second one consists of the first and the third cells of the second row. To sum up, there are 8 sets.

题意说明:

给你 n * m 的矩阵

让你找到有多少符合要求的集合

比如给你一行, 1001011 你可以选择 一个1两个1三个1四个一, 选择0的情况同理,

所以可以看出来用到了组合数的 C(4,1) + C(4,2) + C(4,3) + C(4,4),

而有如下公式

C(4,0) + C(4,1) + C(4,2) + C(4,3) + C(4,4) =  2 ^ 4

所以公式转化为 2 ^ n - 1(用来计算组合数个个数)

下面的pow函数就是这个功能

之后要横向纵向分别分析,但是这个时候别忘记会重叠,所以减去 n * m

代码如下:

/*
theme: AIM tech Round 4 div 2 B rectangles
writer:pprp
declare:reference from zindow
date:2017/8/25
*/ #include<bits/stdc++.h> using namespace std;
const int maxn = ;
typedef long long ll; //用来计算组合数的
ll pow(int x)
{
ll res = ;
while(x--) res <<= ;
return res-;
} int main()
{
int whi = , bla = ;
int n, m;
ll ans = ;
cin >> n >> m;
int a[maxn][maxn]; for(int i = ; i < n ; i++)
for(int j = ; j < m ; j++)
cin >> a[i][j]; for(int i = ; i < n ; i++)
{
whi = bla = ;
for(int j = ; j < m ; j++)
{
if(a[i][j] == )whi++;
else bla++;
}
ans += pow(whi) + pow(bla);
} // cout << "test" << endl;
// cout << ans << endl; for(int j = ; j < m ; j++)
{
whi = bla = ;
for(int i = ; i < n ; i++)
{
if(a[i][j] == )whi++;
else bla++;
}
// cout << "case :" << j << "whi" << whi << "bla" << bla << endl;
ans += pow(whi) + pow(bla);
} // cout << "test" << endl;
// cout << ans << endl; cout << ans - m*n << endl; return ;
}

横向纵向遍历的时候总是出错,

这样记: 初始化的时候 for(i : 1...n)

            for(j : 1...m)

一般的这种形式是横向遍历,如果要改成纵向遍历,那么就要内外循环翻转过来

i对应n

j对应m

这样就不容易错了

另外补充二维数组的知识点,分析的时候就不容易有问题了

C语言中是按照行优先储存的

codeforce AIM tech Round 4 div 2 B rectangles的更多相关文章

  1. AIM Tech Round 3 (Div. 2)

    #include <iostream> using namespace std; ]; int main() { int n, b, d; cin >> n >> ...

  2. AIM Tech Round 3 (Div. 2) A B C D

    虽然打的时候是深夜但是状态比较好 但还是犯了好多错误..加分场愣是打成了降分场 ABC都比较水 一会敲完去看D 很快的就想出了求0和1个数的办法 然后一直wa在第四组..快结束的时候B因为低级错误被h ...

  3. AIM Tech Round 3 (Div. 2) B

    Description Vasya takes part in the orienteering competition. There are n checkpoints located along ...

  4. AIM Tech Round 3 (Div. 2) A

    Description Kolya is going to make fresh orange juice. He has n oranges of sizes a1, a2, ..., an. Ko ...

  5. AIM Tech Round 3 (Div. 2) (B C D E) (codeforces 709B 709C 709D 709E)

    rating又掉下去了.好不容易蓝了.... A..没读懂题,wa了好几次,明天问队友补上... B. Checkpoints 题意:一条直线上n个点x1,x2...xn,现在在位置a,求要经过任意n ...

  6. AIM Tech Round 3 (Div. 2) B 数学+贪心

    http://codeforces.com/contest/709 题目大意:给一个一维的坐标轴,上面有n个点,我们刚开始在位置a,问,从a点开始走,走n-1个点所需要的最小路程. 思路:我们知道,如 ...

  7. AIM Tech Round 3 (Div. 2)D. Recover the String(贪心+字符串)

    D. Recover the String time limit per test 1 second memory limit per test 256 megabytes input standar ...

  8. AIM Tech Round 4 (Div. 2)ABCD

    A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  9. AIM Tech Round 4 (Div. 2)(A,暴力,B,组合数,C,STL+排序)

    A. Diversity time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...

随机推荐

  1. 简单JS旋转实现转盘抽奖效果

    闲来没事,做了一个模拟转盘抽奖的HTML&JS的效果: 可以在设置的时候,选择几个区域,并且可以填写指针将要停止的区域 比如,我选择了"区域2",结果就是这样 具体可以见下 ...

  2. 627. Swap Salary

    627. Swap Salary SQL Schema Given a table salary, such as the one below, that has m=male and f=femal ...

  3. 使用nginx搭建文件下载服务器

    搭建一个文件服务器的方式有很多,本文介绍笔者曾经用过的两种: 使用nginx 使用java服务,通过controller提供 一.使用nginx搭建 在nginx.conf中直接配置server即可, ...

  4. Python的一些教程(转)

    原文:http://blog.chinaunix.net/uid-26200547-id-3418038.html Python 安装配置及基本语法篇 Python 语言速成 Python 基本知识  ...

  5. qemu进程页表和EPT的同步问题

    背景分析: 在之前分析EPT violation的时候,没有太注意qemu进程页表和EPT的关系,从虚拟机运行过程分析,虚拟机访存使用自身页表和EPT完成地址转换,没有用到qemu进程页表,所以也就想 ...

  6. django-网页视屏播放

    基本都基于第三方: -cc视频 -播放免费视频 -收费视频 -需要做认证,cc视频会给你发消息,你返回,携带数据 -在前端页面中添加响应的视屏框的代码 -功能实现,有相关接口文档,配置即可

  7. 磁钉导航差速式AGV控制实验

    磁钉导航AGV实验 2016-03 本机器是采用RFID电子地标配合磁钉传感器的定位导航AGV.本AGV已初步实现里程计精确解算,磁钉数据融合,AGV定点精准停车.原地旋转换向.远程无线调度的功能,初 ...

  8. 详解MySQL第一篇—MySQL简要介绍及DDL语句

    背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...

  9. 专项训练知识点与错题整理-nowcoder-c++

    1- 来自:http://www.cskaoyan.com/thread-595813-1-1.html 1.拷贝构造函数 转自:https://www.cnblogs.com/alantu2018/ ...

  10. Java中树的存储结构实现

    一.树 树与线性表.栈.队列等线性结构不同,树是一种非线性结构. 一棵树只有一个根节点,如果一棵树有了多个根节点,那它已经不再是一棵树了,而是多棵树的集合,也被称为森林. 二.树的父节点表示法 树中除 ...