代码求调试,先过阳历,不求满分

P8818 [CSP-S 2022] 策略游戏

想把一二题拿到100多分以上,胆汁第一题怎么样例过不了?没用st和线段树,就是暴力想过部分分
by Accepted_please @ 2023-09-19 18:35:09


思路错了哦
by Ericzrj @ 2023-09-19 18:41:48


应该是是要找小Q的最大最小,小L的最大,最小,负数中最大,正数中最小
by Ericzrj @ 2023-09-19 18:43:40


建议看一下题解的思路
by Ericzrj @ 2023-09-19 18:44:26


``` #include<bits/stdc++.h> using namespace std; const int ll=100005,inf=INT_MAX; long long A[ll],B[ll]; long long a1; long long st; long long qq[ll]; long long n,m,q; int main() { cin>>n>>m>>q; for(int i=1;i<=n;i++) { cin>>A[i]; } for(int i=1;i<=m;i++) { cin>>B[i]; } for(int i=1;i<=q;i++) { int l1,r1,l2,r2; cin>>l1>>r1>>l2>>r2; long long mxl=-inf,mnl=inf,zl=inf,fl=-inf; long long mxq=-inf,mnq=inf; for(int j=l1;j<=r1;j++){ mxl=max(mxl,A[j]); mnl=min(mnl,A[j]); if(A[j]>=0) zl=min(zl,A[j]); else fl=max(fl,A[j]); } for(int j=l2;j<=r2;j++){ mxq=max(mxq,B[j]); mnq=min(mnq,B[j]); } if(mnq>=0){ if(mxl<=0) cout<<1ll*mxq*mxl<<endl; else cout<<1ll*mnq*mxl<<endl; } else if(mxq<=0){ if(mnl<=0) cout<<1ll*mxq*mnl<<endl; else cout<<1ll*mnq*mnl<<endl; } else{ long long ans; if(fl!=-inf){ ans=1ll*fl*mxq; if(zl!=inf) ans=max(ans,1ll*zl*mnq); } else ans=1ll*zl*mnq; cout<<ans<<endl; } } return 0; } ``` 这样打暴力可以过阳历
by Ericzrj @ 2023-09-19 18:57:30


@[Ericzrj](/user/481526) 肥肠感谢!!!
by Accepted_please @ 2023-09-20 18:15:15


|