如果你 85pts

P8818 [CSP-S 2022] 策略游戏

%%%
by Chancylaser @ 2023-07-31 19:58:03


求解释的再详细一点QWQ(我错了23 30 37)
by Lyy450605 @ 2023-07-31 21:50:16


@[Lyy450605](/user/930117) 特判b中全是0的情况,并检查自己的极限值赋的是否过大
by sunjiangnan55 @ 2023-08-01 07:55:10


谢谢,把大/小于改成了大/小于等于,就过了 ```cpp //查询 bool pla,plb,mia,mib;//a/b数组是否有正数/负数 int tas,tab,tbs,tbb,tmp0,tmp1;//tmp0最小的正数,最大的负数 for(int i=1;i<=q;i++){ pla=plb=mia=mib=0; cin>>l1>>r1>>l2>>r2; tas=query(l1,r1,1); tab=query(l1,r1,2); tbs=query(l2,r2,3); tbb=query(l2,r2,4); tmp0=Findn(l1,r1,0); tmp1=Findn(l1,r1,1); if(tas<=0) mia=1;//这里 if(tab>=0) pla=1; if(tbs<=0) mib=1; if(tbb>=0) plb=1; if(mia==0&&pla==1){//a:全是正数 if(mib==0&&plb==1){ cout<<1ll*tab*tbs<<"\n"; } else{ //cout<<1ll*tas*tbs<<"\n"; if(tmp0==0) cout<<0<<"\n"; else cout<<1ll*tas*tbs<<"\n"; } continue; } if(mia==1&&pla==0){//a:全是负数 if(mib==1&&plb==0) cout<<1ll*tas*tbb<<"\n"; else{ //cout<<1ll*tab*tbb<<"\n"; if(tmp1==0) cout<<0<<"\n"; else cout<<1ll*tab*tbb<<"\n"; } continue; } if(mia==1&&pla==1){//a:有正有负 if(mib==0&&plb==1) {cout<<1ll*tab*tbs<<"\n"; continue;} if(mib==1&&plb==0) {cout<<1ll*tas*tbb<<"\n"; continue;} if(mib==1&&plb==1){//a:最小的正数和最大的负数 -》 最小的负数和最大的正数 cout<<max(1ll*tmp0*tbs,1ll*tmp1*tbb)<<"\n"; } continue; } if(mib==0&&plb==0){ cout<<0<<"\n"; } ```
by Lyy450605 @ 2023-08-01 08:39:20


@sunjiangnan 一个关注已送达 (*^_^*)
by Lyy450605 @ 2023-08-01 10:01:20


@[sunjiangnan55](/user/448871) 谢谢
by Lyy450605 @ 2023-08-01 10:02:21


|