问题标题: 酷町堂:4708

0
0

1
已采纳
缪鲲鹏
缪鲲鹏
新手光能
新手光能

这题与它改编之前的原题2016年普及组第三题比起来真的是大水题.

我来给你讲讲我的思路吧!

要耐心看完啊!

首先,输入船来的次数

然后如果第i次是下船"0"的话,先输入下船的人数,再按题目要求,就应该把下船的人的国家人数加上

for(int j = 1 ; j <= b ; j ++) {//这里的b是下船的人数
    cin >> c;//这里的c是第j个人的国籍
    f[c] ++;//属于这个人的国家人数+1
}

如果第i次是上船"1"的话,先输入上船的人数,再按题目要求,就应该把上船的人的国家人数减去

for(int j = 1 ; j <= b ; j ++) {
    cin >> c;
    f[c] --;
}

接下来贴核心代码:

for(int i = 1 ; i <= n ; i ++) {
    cin >> a >> b;//这里的a表示第i次上船还是下船
    if(a == 1)//如果是上船
        for(int j = 1 ; j <= b ; j ++) {
            cin >> c;
            f[c] --;
    }
    else//如果是下船
        for(int j = 1 ; j <= b ; j ++) {
            cin >> c;
            f[c] ++;
    }
}

最后从1开始输出,一直到10就行了

for(int i = 1 ; i <= 10 ; i ++) cout << f[i] << ' ';

OK,就这么简单,希望对你有点帮助~

0
我要回答