[CCF CSP]201909-2 小明种苹果(续)
模拟题,尝试用python3写了一发,发现不能ac,觉得可能是python写挂了,又用C++写了一遍,还是只能90分。
最后通过看他人的博客被点醒,N=3且3组都有掉落情况时,E=3!!
其实还是自己读题能力弱了,题意中有对第三个统计量的形式化解释:
是满足条件的元素个数。
另外,还需要注意总和数T可能爆int,需要开longlong(python无视)
C++代码:
#include<bits/stdc++.h> using namespace std; #define ll long long ll n,cnt=0,a; const ll N=1000+5; ll vis[N]; ll D,E,T; int main() { ll n,m; cin>>n; T=D=E=0; for(ll i=1;i<=n;i++) { cin>>m; cin>>a; ll temp=a; for(ll j=2;j<=m;j++) { cin>>a; if(a>0) { if(temp>a&&!vis[i]) { D++; vis[i]=1; } temp=a; } else temp+=a; } T+=temp; if(i>=3&&vis[i-2]&&vis[i-1]&&vis[i])E++; } if(n>=3&&vis[1]&&vis[n-1]&&vis[n]) E++; if(n>=3&&vis[1]&&vis[2]&&vis[n])E++; cout<<T<<' '<<D<<' '<<E<<endl; return 0; }
PYTHON3代码:
n=int(input()) T=0 D=E=0 vis=[] for i in range(0,n): list=input().split() temp=int(list[1]) vis.append(0) for j in range(2,len(list)): a=int(list[j]) if(a>0): if(temp>a and vis[i]==0): D+=1 vis[i]=1 temp=a else:temp+=a T+=temp if(i>=2 and vis[i-2] and vis[i-1] and vis[i]):E+=1 if(n>=3 and vis[0] and vis[n-1] and vis[n-2]):E+=1 if(n>=3 and vis[0] and vis[1] and vis[n-1]):E+=1 print(T,D,E)