20190901 小明种苹果
解题思路
1 |
|
20190902 小明种苹果2
解题思路
- 数据输入范围很大,用longlong
- 判断到重置数目时可以直接替换
- 维护一个bool表保存是否发生掉落
- 判断连续三个没有想出好的办法,边界处理使用了硬编码的方法
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using namespace std;
struct pingguo{
long long guoshi;
bool diaoluo;
};
int main(){
int num1;
cin>>num1;
pingguo p[num1];
long long sum = 0;
int D = 0;
int E = 0;
for(int i = 0;i<num1;i++){
p[i].diaoluo = false;
long long tmp;
int num2;
cin>>num2>>tmp;
for(int k = 0;k<num2-1;k++){
long long tmp2;
cin>>tmp2;
if(tmp2 > 0){
if(tmp2!=tmp){
p[i].diaoluo = true;
tmp = tmp2;
}
}
else{
tmp=tmp+tmp2;
}
}
if(p[i].diaoluo){
D++;
}
sum = sum + tmp;
}
if(num1>=3){
for(int i = 1;i<num1-1;i++){
if(p[i-1].diaoluo&&p[i].diaoluo&&p[i+1].diaoluo){
E++;
}
}
if(p[0].diaoluo&&p[1].diaoluo&&p[num1-1].diaoluo){
E++;
}
if(p[0].diaoluo&&p[num1-1].diaoluo&&p[num1-2].diaoluo){
E++;
}
}
cout<<sum<<" "<<D<<" "<<E;
return 0;
/*
4
4 74 -7 -12 -5
5 73 -8 -6 59 -4
5 76 -5 -10 60 -2
5 80 -6 -15 59 0
输出:222 1 0
5
4 10 0 9 0
4 10 -2 7 0
2 10 0
4 10 -3 5 0
4 10 -1 8 0
输出:39 4 2
*/
}
评论