codeforce AIM tech Round 4 div 2 B rectangles
2017-08-25 15:32:14
writer:pprp
题目:
1 second
256 megabytes
standard input
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:
- All cells in a set have the same color.
- Every two cells in a set share row or column.
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 single integer — the number of non-empty sets from the problem description.
1 1
0
1
2 3
1 0 1
0 1 0
8
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的更多相关文章
- AIM Tech Round 3 (Div. 2)
#include <iostream> using namespace std; ]; int main() { int n, b, d; cin >> n >> ...
- AIM Tech Round 3 (Div. 2) A B C D
虽然打的时候是深夜但是状态比较好 但还是犯了好多错误..加分场愣是打成了降分场 ABC都比较水 一会敲完去看D 很快的就想出了求0和1个数的办法 然后一直wa在第四组..快结束的时候B因为低级错误被h ...
- AIM Tech Round 3 (Div. 2) B
Description Vasya takes part in the orienteering competition. There are n checkpoints located along ...
- 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 ...
- 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 ...
- AIM Tech Round 3 (Div. 2) B 数学+贪心
http://codeforces.com/contest/709 题目大意:给一个一维的坐标轴,上面有n个点,我们刚开始在位置a,问,从a点开始走,走n-1个点所需要的最小路程. 思路:我们知道,如 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- 剑指Offer——翻转单词顺序列
题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“studen ...
- 手游包压缩技术引领手游行业实现app页游化
近些年,掌上游戏时代已经成为全民风尚,但身为游戏开发商考虑过手游安装包大小与用户转化率之间的关系吗? 随着手机游戏市场发展愈发壮大,行业发展愈加成熟,手游厂商愈来愈多,手游产业也进入了优胜劣汰的环节, ...
- kvm_read_guest*函数分析
2017-06-30 在KVM中基于其搞特权及,可以透明的读写客户机的内存信息,为此KVM提供了一套API,这里姑且称之为kvm_read_guest_virt*/kvm_write_guest_vi ...
- kubernetes安全认证相关资料
1.Kubernetes安装之创建Kubeconfig文件 https://jimmysong.io/blogs/kubernetes-create-kubeconfig/ 2.轻松了解Kuberne ...
- 浅谈virtualenv(虚拟环境)
简介 virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题. 例如: 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的P ...
- 《从零開始搭建游戏server》项目公布到Linux环境
前言: 之前我们提及了怎样使用Maven来创建.管理和打包项目,也简单过了一遍Linux中搭建Java开发环境的步骤,如今我们就開始将我们之前开发的项目demo公布到Linux环境下.并让它正常执行起 ...
- Visual Studio 起始页面关闭新闻等
[工具]->[选项]->[环境]->[启动] 将“下载内容的时间间隔”一项的勾选去掉,然后确定保存.这样,就大功告成啦
- Python的数据类型和常用方法大全
数据类型 一.数字 整形int x=10 #x=int(10) print(id(x),type(x),x) 浮点型float salary=3.1 #salary=float(3.1) print( ...
- JAVA中的反射机制 (转)
反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本 ...
- Error: registers may not be the same -- `strexb r3,r2,[r3]'
tmp\ccFziEge.s:914: Error: registers may not be the same -- `strexb r3,r2,[r3]'tmp\ccFziEge.s:968: E ...