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