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


测试用例
题目描述给出的第一组测试用例覆盖了以下情形:1棵苹果树掉苹果,苹果树的数据行内包含0, 小于0的整数和大于0的整数,以及E=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
题目描述给出的第二组测试用例覆盖了以下情形:多棵苹果树掉苹果,E=2,相邻3棵苹果树分散在头尾——通过该测试用例表明程序能较好地处理头尾相邻的特例。
样例输入
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
所有苹果树都掉了苹果的情形。目的是进一步验证计算E的值的代码是否正确。
样例输入
4
4 10 0 9 0
4 10 -2 7 0
4 10 -3 5 0
4 10 -1 8 0
样例输出
29 4 4
n=1的边界情形。根据题目描述的子任务表格,这是不会发生的。验证通过也不错。
样例输入
1
4 10 0 9 0
样例输出
9 1 0
n=3的边界情形,只有2棵掉了苹果。
样例输入
3
4 10 0 9 0
4 10 -2 7 0
2 10 0
样例输出
26 2 0
n=3的边界情形,3棵苹果树都掉了苹果。这种情形下,E=3。
样例输入
3
4 10 0 9 0
4 10 -2 7 0
4 10 -3 5 0
样例输出
21 3 3
n=2的边界情形。
样例输入
2
4 10 0 9 0
4 10 -2 7 0
样例输出
16 2 0
n=int(input()) t=0#苹果总数 d=0#掉落棵 e=0#连续三颗 E=[0]*(n*2) for i in range(0,n): a=list(map(int,input().split())) dropsum=sum(x for x in a if x<0) dropsum=dropsum+a[1]#如果没有掉落的总数 tempsum=0#实际总数 for j in range(-1,-a[0]-1,-1):#从最后开始 tempsum=tempsum+a[j] if a[j]>0: break t=t+tempsum if tempsum!=dropsum:#有掉落 d=d+1 E[i]=1 E[i+n]=1 for i in range(n,2*n): if sum(E[i-2:i+1])==3: e=e+1 print(t,d,e) '''第一个数是m 第2个数是本树最初苹果数 最后一个正数-之后的负数 =苹果最后数量 有圆圈循环 可以用0-2n 数组b[] 若掉落 则b[i]..=1 '''

浙公网安备 33010602011771号