题目
东区一教官方声称十一点熄灯。但是实际上,因为教室里的灯是声控的,所以常常不到十一点许多没有人的教室已经熄灯了。
某天夜里,值班室的阿姨想要你帮她估算还剩几个教室里有人。她会告诉你东区一教一共有几层楼,每层楼分别有几间教室,每间教室分别有几扇窗,你们站在门前也能看到整栋楼有哪些窗户里灯还亮着。只要有一个窗户亮着,那么这间房间就是有人的。
题目链接
https://citel.bjtu.edu.cn/acm/problem/1927
输入数据
第一行一个整数 n (1≤n≤200),表示教学楼的层数。
第二行开始 n 行,每行第一个数 ki (1≤ki≤200) 代表该层的教室数目。
接下来 ki 个数,分别代表该层每间教室的窗户数量 fj (1≤fj≤10)。
接下来 n 行,第 i 行有 ∑kij=1fj 个数字 x(i,j)∈{0,1},1 代表这扇窗户亮着。
输出数据
一个整数,还有灯开着的房间的数目。
样例输入
5
3 1 1 2
2 1 4
6 3 1 1 1 2 2
5 1 1 2 1 1
6 2 2 2 2 2 2
0 0 0 0
1 0 1 0 1
1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
样例输出
3
样例说明
第 2 层的两间教室和第 3 层的第一间教室有灯亮着,共 3 个房间。
问题分析
水题,写代码的时候稍微认真一点就ok
AC代码
#include <bits/stdc++.h>
using namespace std;
int k[205], f[205][205];
int main()
{
int n, i, j, m, num = 0, x;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> k[i];
for (j = 0; j < k[i]; j++)
cin >> f[i][j];
}
for (i = 0; i < n; i++)
{
for (j = 0; j < k[i]; j++)
{
bool first = true;
for (m = 0; m < f[i][j]; m++)
{
cin >> x;
if (x == 1 && first)
{
num++;
first = false;
}
}
}
}
cout << num << endl;
return 0;
}