201909-2 小明种苹果(续)
试题编号: 201909-2
试题名称: 小明种苹果(续)
时间限制: 1.0s
内存限制: 512.0MB
问题描述:
思路:
一步步模拟做下去就行,没啥难度
最后缩减的精炼代码:
#include<bits/stdc++.h>
using namespace std;
int N,M,T = 0,D = 0,E = 0;
int orig,shu;
int main(){
scanf("%d",&N);
int flag1[N+1] = {0};
for(int i = 0;i < N;i++){
int K,orig;
scanf("%d",&K);
for(int j = 1;j <= K;j++){
scanf("%d",&shu);
if(shu > 0){
if(j==1) orig = shu;
if(shu > orig) orig = shu;
(shu < orig && j!=1) ? orig = shu,flag1[i] = 1:orig = orig;
}else{
orig += shu;
}
}
T += orig;
if(flag1[i])
D++;
}
for(int i = 0;i < N;i++){
if(flag1[i] && flag1[(i+1)%N] && flag1[(i+2)%N])
E++;
}
printf("%d %d %d",T,D,E);
}
第一次写的粗糙代码:
#include<bits/stdc++.h>
using namespace std;
struct tree{
int sum;
int del = 0;
int flag = 0;
};
int main(){
int n;
cin >> n ;
tree tr[n];
int tp,total = 0;
int drop = 0;
for(int i = 0;i < n;i++){
int m;
cin >> m;
int flag2 = 0;
for(int j = 0;j < m;j++){
cin >> tp;
if(tp > 0){
if(tr[i].flag==0 && tr[i].sum != tp && (flag2++)){
drop++;
tr[i].flag = 1;
}
tr[i].sum = tp;
}
else{
tr[i].del += (-tp);
tr[i].sum += tp;
}
}
total += tr[i].sum;
}
int cnt = 0;
for(int i = 1;i < n-1;i++){
if(tr[i].flag&&tr[i-1].flag&&tr[i+1].flag){
cnt++;
}
}
if(tr[0].flag&&tr[n-1].flag){
if(tr[1].flag){
cnt++;
}
if(tr[n-2].flag){
cnt++;
}
}
cout << total << " " << drop << " " << 0 << endl;
}