小明种苹果(续)第十七次CCF认证

天大地大妈咪最大 提交于 2019-11-30 13:22:28

小明种苹果(续)第十七次CCF认证

原题链接

解题思路

进行模拟即可

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1007;
struct node
{
    ll init, dsum;
    bool drop; //用来记录这棵树是否发生苹果掉落
}a[maxn];
int n, m;
int main()
{
    ll tmp;
    scanf("%lld", &n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d", &m);
        for(int j=1; j<=m; j++)
        {
            scanf("%lld", &tmp);
            if(j==1) //第一次要进行初始化
            {
                a[i].init=tmp;
                a[i].drop=false;
                continue;   
            } 
            if(tmp>0)
            {
                if(a[i].init!=tmp) //判断是否发生苹果掉落
                {
                    a[i].dsum+=a[i].init-tmp;
                    a[i].init=tmp;
                    a[i].drop=true; 
                }   
            }
            else
            {
                a[i].init += tmp; //注意这个tmp是非正数 
            }   
        }   
    }
    ll sum=0, nums=0, ans=0;    
    for(int i=1; i<=n; i++)
    {
        sum+=a[i].init;
        if(a[i].drop)
            nums++;
    }
    printf("%lld %lld ", sum, nums);
    for(int i=1; i<=n; i++)
    {
        if(a[i].drop)
        {
            if(i==1 && a[n].drop && a[i+1].drop)
                ans++;
            else if(i==n && a[i-1].drop && a[1].drop)
                ans++;
            else if(a[i-1].drop && a[i+1].drop)
                ans++;
        }
    }
    printf("%lld\n", ans);
    return 0;
 } 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!