CCF CSP 201909-2 小明种苹果(续)

题目:

试题编号: 201909-2
试题名称: 小明种苹果(续)
时间限制: 1.0s
内存限制: 512.0MB

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

思路:

1.用一个数组drop[1001]记录每棵树是否掉苹果;
2.在遍历每颗树时,用变量记录当前苹果个数,如果遍历到正数,则比较它和变量中值的大小,如果不相等,则说明掉了苹果,修改当前变量值,并修改数组中的标记;
3.每遍历完一棵树,加上这棵树最后的苹果个数,最后可以得到最终的苹果个数;
4.最后遍历记录是否掉苹果的数组drop,i从编号1到n。如果drop[i]==true,则这颗树存在掉落;如果drop[i]&&drop[(i+1)%n]&&drop[(i+2)%n]==true,则存在一组相邻连续三棵树发生掉落;

代码:

#include<iostream>
using namespace std;
int drop[1001];
int n,total=0,sum=0,cnt=0;
int f(const int &a){
	return a<=n?a:(a-n);
}
int main(){	
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int m,num,a;
		scanf("%d%d",&m,&num);
		for(int j=1;j<m;j++){
			scanf("%d",&a);
			if(a<=0) num+=a;
			else if(num!=a){
				drop[i]=1;
				num=a;
			}
		}
		total+=num;
	}
	for(int i=1;i<=n;i++){
		sum+=drop[i];
		if(drop[i]&&drop[f(i+1)]&&drop[f(i+2)]) cnt++;
	}
	printf("%d %d %d",total,sum,cnt);
	return 0;
}
posted @ 2019-10-04 17:14  YuhanのBlog  阅读(195)  评论(0编辑  收藏  举报