题目虽然长了点,但总体来说不难理解。
有n棵树,每棵树都有m个数据,第一个数据为初始苹果数量,后续数据如果小于等于0,则为疏果,如果大于0,则为重新统计,如果现有和统计值不同,则记做落果
这是一道假数组。里面需要多次使用的数据是有限个的(相对考生而言)
另外第一棵树和第二棵树需要另外单独拿出来做标记,因为它们和最后两棵树有关系
第一次只拿了50分,因为题目所给的测试样例都只落果一次,如果落果多次是不能重复计数的
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int m1;
int flag=0;
int flag1=0;//第一个落果为1
int flag2=0;//第二个落果为2
//第n棵如果落果且第n-1棵落果则检查flag1
//第n棵如果落果则检查flag1和flag2
int g=0;
int s=0;
int cont=0;
int ifadd=0;
for(int i=0;i<n;++i){
cin>>m1;
int m;
int tempnum;
cin>>m;
if(ifadd==0){
flag=0;
}
ifadd=0;
for(int j=1;j<m1;++j){
cin>>tempnum;
if(tempnum<=0){
m+=tempnum;
}
else{
if(tempnum!=m){
m=tempnum;
if(ifadd==0){
flag++;
cont++;
if(flag==3){
g++;
flag=2;
}
if(i==0){
flag1=1;
}
else if(i==1){
flag2=1;
}
else if(i==n-1){
if(flag1==1 and flag2==1){
g++;
}
if(flag==2){
if(flag1==1){
g++;
}
}
}
}
ifadd++;
}
}
}
s+=m;
}
cout<<s<<" "<<cont<<" "<<g<<endl;
}
1574

被折叠的 条评论
为什么被折叠?



