求大佬教,输出为什么是-2,为什么只有20分T.T,

P1534 不高兴的津津(升级版)

@[jack2000003](/space/show?uid=183842) ```cpp #include <iostream> using namespace std; int a[3005],b[3005]; int main() { int n,ans=0,ret=0; cin>>n; for(int i=0;i<n;i++) cin>>a[i]>>b[i]; for(int i=0;i<n;i++) { ans+=a[i]+b[i]-8; ret+=ans; } cout<<ret; return 0; } ```
by Smile_Cindy @ 2019-02-23 21:09:50


@[jack2000003](/space/show?uid=183842) 不需要加判断,因为不高兴和高兴都会持续到第二天,而且你这样做ans相当于每次清零,没有把每一天的高兴或不高兴的值累计起来,下附修改后的代码: ```cpp #include <iostream> using namespace std; int a[3005],b[3005]; int main() { int n,ans=0,s=0; cin>>n; for(int i=0;i<n;i++) cin>>a[i]>>b[i]; for(int i=0;i<n;i++) { ans+=a[i]+b[i]-8; s+=ans; } cout<<s; return 0; } ```
by 221B @ 2019-02-23 21:16:59


@[jack2000003](/space/show?uid=183842) 不需要加判断,因为不高兴和高兴都会持续到第二天。而且你这样做ans相当于每次清零,没有把每一天的高兴或不高兴的值累计起来。楼上大佬已经写出代码了,蒟蒻一枚希望有帮助。
by 221B @ 2019-02-23 21:18:09


网络延迟不好意思,多发了一个
by 221B @ 2019-02-23 21:19:21


老铁们,不需要数组吧? ```cpp #include<iostream> using namespace std; int main() { int n,a,b,ans=0; for(int i=0;i<n;i++) { cin>>a>>b; ans=a+b-8; } cout<<ans; return 0; } ```
by Mindstorms103 @ 2019-04-06 17:35:57


更正一下 ```cpp #include<iostream> using namespace std; int main() { int n,a,b,ans=0,s=0; cin>>n; for(int i=0;i<n;i++) { cin>>a>>b; ans+=a+b-8; s+=ans; } cout<<s; return 0; } ```
by Mindstorms103 @ 2019-04-06 18:02:40


@[Mindstorms103](/space/show?uid=184206) 代码神似。。。 ## 然鹅我真的是自己做的 ``` #include <iostream> using namespace std; int main() { int sum=0,d,x,y,p=0; cin>>d; for(int i=0;i<d;i++) { cin>>x>>y; p=p+x+y-8; sum+=p; } cout<<sum<<endl; return 0; } ```
by oistr @ 2019-04-30 22:20:04


|