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

本文详细解析了小明种苹果(续)第十七次CCF认证的模拟题,通过C++代码实现,介绍了如何处理苹果树的初始化、苹果掉落的判断及累计掉落数量的计算,最终输出总苹果数、掉落次数及特定条件下的苹果树数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小明种苹果(续)第十七次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;
 } 

转载于:https://www.cnblogs.com/alking1001/p/11592696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值