CCF 20190902 小明种苹果续

思路:每一行数据单独处理,没必要将所有数据都存储起来。用flag数组统计每棵树是否有落果。判断落果方法,先将果数初始化为sum,根据输入的数x判断应该进行的操作,如果x小于等于0,进行疏果,sum-=x;如果x大于0,说明进行的重新统计了果数,比较其与sum的大小判断是否有落果,最后统计落果树的数目。判断落果有几组时,由于树是一个园,故下标应用取余的方法进行头尾循环,e.g.:(i—1+n)% n,快速简单。


代码实现:

#include

using namespace std;

const int N = 1000;
int flag[N];

int main(){
    int n,T = 0,D = 0,E = 0;
    cin>>n;
    for(int i = 0; i < n; i++){
        int m,sum;
        cin>>m>>sum;
        for(int j = 1; j < m; j++){
            int x;
            cin>>x;
            if(x <= 0){
                sum += x;
            }
            else if(x < sum){
                sum = x;
                flag[i] = 1;
            }
        }
        T += sum;
        if(flag[i] == 1)
            D++;
    }
    if(n >= 3){
        for(int i = 0; i < n; i++){
            if(flag[i] && flag[(i-1+n)%n] && flag[(i+1+n)%n])
                E++;
        }
    }
    cout<

你可能感兴趣的:(CCF 20190902 小明种苹果续)