题目
![]() ![]() ![]() |
|---|
思路
也是一个序列处理的题目,思路不难。
一开始卡50分是因为 落果数目重复计算
我本来还以为是因为我循环计数写错了,但结果不是。可见虽然先判断0-n-3,再单独判断 n-2,n-1的方法很傻 但也是对的。
当然了,还是要学会 用上% 求余的方法。
代码
#include<iostream>using namespace std;const int N =1005;int drop[N] ={0};long long apple_num[N] ={0};int drop_num =0;int E =0;//连续掉落组数int main(){int n;cin>>n;for(int i=0;i<n;i++){int m;//每行输入个数int init_num;cin>>m;cin>>init_num;apple_num[i] =init_num;int temp_m =m-1;while(temp_m--){int temp_num;//每行从第三个开始的输入cin>>temp_num;if(temp_num>0){if(apple_num[i]>temp_num){//原来个数大于重新统计个数,说明掉落drop[i] =1;//drop_num++; //50分的错误在这里,存在重复计算落果现象!!!}apple_num[i] =temp_num;}else{//小于0 说明在蔬果apple_num[i]+=temp_num;}}}long long sum =0;for(int i=0;i<n;i++){sum+=apple_num[i];}for(int i=0;i<n;i++){if(drop[i] ==1){drop_num++;if(drop[(i+1)%n]==1&&drop[(i+2)%n]==1){E++;}}}cout<<sum<<" "<<drop_num<<" "<<E;return 0;}



