BJTUOJ 1927 — 学到十一点才是真学霸

题目

东区一教官方声称十一点熄灯。但是实际上,因为教室里的灯是声控的,所以常常不到十一点许多没有人的教室已经熄灯了。

某天夜里,值班室的阿姨想要你帮她估算还剩几个教室里有人。她会告诉你东区一教一共有几层楼,每层楼分别有几间教室,每间教室分别有几扇窗,你们站在门前也能看到整栋楼有哪些窗户里灯还亮着。只要有一个窗户亮着,那么这间房间就是有人的。

题目链接

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;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部