#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> tree[n];
for(int i = 0; i < n; i++) {
int temp;
cin >> temp;
tree[i].push_back(temp);
for(int j = 1; j <= tree[i][0]; j++) {
cin >> temp;
tree[i].push_back(temp);
}
}
int T = 0, D = 0, E = 0;
int *tags = new int[n];
for(int i = 0; i < n; i++) {
int temp = 0, count;
tags[i] = 0; //苹果是否掉落标记置0
for(vector<int>::iterator it = tree[i].begin() + 1; it != tree[i].end(); it++) {
if(it == tree[i].begin() + 1) temp = *it;
if(*it > 0) {
count = *it;
if(count - temp != 0) tags[i] = 1; //发生了苹果掉落
temp = *it; //给temp赋上新值(包括疏果和掉落去掉的)
}
else temp += *it; //注意*it为负值
}
T += temp;
}
for(int i = 0; i < n; i++)
D += tags[i];
for(int i = 0; i < n; i++) {
if(i == 0 && tags[0] == 1 && tags[1] == 1 && tags[n - 1] == 1) E++;
else if(tags[i] == 1 && tags[i + 1] == 1 && tags[i - 1] == 1) E++;
else if(i == n - 1 && tags[n - 1] == 1 && tags[0] == 1 && tags[n - 2] == 1) E++;
}
cout << T << " " << D << " " << E;
return 0;
}
【题解】CCF CSP 201909-2 —— 小明种苹果(续)
最新推荐文章于 2024-08-04 22:43:03 发布