【代码详解】
#include<iostream>
using namespace std;
int T,D,E,e;
int t[1010],b[1010];
int main()
{
int n;
cin>>n;
int c,d;
for(int i=1;i<=n;i++)
{
e=0;
cin>>c;
for(int j=1;j<=c;j++)
{
cin>>d;
if(d>0)
{
if(b[i]>d)
t[i]=1;
b[i]=d;
}
else
b[i]+=d;
}
if(t[i])
D++;
}
for (int i = 1; i <= n-2; i++)
{
if (t[i] && t[i + 1] && t[i + 2])
E++;}
//前N-2棵树的相邻情况
if (t[n - 1] && t[n] && t[1])
E++;
//倒数第二棵+倒数第一棵+第一棵
if (t[n] && t[1] && t[2])
E++;
//倒数第一棵+第一棵+第二棵
//判断是否连续三组都有掉落
for(int i=1;i<=n;i++)
T+=b[i];
cout<<T<<" "<<D<<" "<<E;
return 0;
}
【做题感悟】
此题思路就是要按要求一步步来,思路还是很清晰的,到后面求解E是也是可以分开考虑