小明种苹果(续)
from CCF-CSP 2019-09-2
Time limit:1s
Memory limit:512MB
ac代码:
#include<iostream>
using namespace std;
int n;
bool drop[1005]; //记录每一棵树是否自然掉落过果子
int sum; //后续记录
int main(){
cin>>n;
for(int i = 1;i <= n;++i) { //对n棵树进行操作
int mi,remain,aij; //如题中的mi,aij;remain表示每棵树剩余个数
cin>>mi>>remain;
for(int j = 2;j <= mi;++j){
cin>>aij;
if(aij > 0) //aij大于0那么是统计
if(aij < remain) //如果统计少于之前应剩余的,那么说明掉落了
remain = aij,drop[i] = true;
else
continue;
else //疏果
remain += aij;
}
sum += remain; //sum累加每棵树剩余的果子数目
}
cout<<sum;
sum = 0;
for(int i = 1;i <= n;++i)
if(drop[i])
++sum; //表示掉落过果子的树的数量
cout<<" "<<sum<<" ";
sum = 0;
for(int i = 1,j = n - 2;i <= j;++i)
if(drop[i] && drop[i + 1] && drop[i + 2])
++sum; //表示连续三颗树掉落果子的树的数量
if(drop[n - 1] && drop[n] && drop[1])
++sum;
if(drop[n] && drop[1] && drop[2])
++sum;
cout<<sum;
return 0;
}