
题目大意给定数组 A 长度 n数组 B 长度 m矩阵C{i,j}Ai*Bj。每轮查询给出l1,r1,l2,r2小L选x[l1,r1]小Q看到x之后选y[l2,r2]小L希望得分 C{x,y}尽可能大小Q希望得分尽可能小两人都采取最优策略求最终得分。暴力核心思路小 L 选定一个Ax小 Q 一定会选对自己最有利的 y如果Ax0乘积要尽量小 → Q 选 B 区间最小值Bmin得分AxBmin如果Ax0负数乘大数会更小 → Q 选 B 区间最大值Bmax得分AxBmax小 L 知道 Q 会这么操作所以小 L 遍历 A 区间里每一个元素算出上面对应的得分取最大值就是这一轮答案。暴力代码#includebits/stdc.husingnamespacestd;longlongn,m,q;longlonga[1005],b[1005];intmain(){cinnmq;for(inti1;in;i){cina[i];}for(inti1;im;i){cinb[i];}while(q--){intl1,l2,r1,r2;cinl1r1l2r2;longlongmaxnINT_MIN,minnINT_MAX;for(intil1;ir1;i){maxnmax(maxn,a[i]);}for(intil2;ir2;i){minnmin(minn,b[i]);}coutmaxn*minnendl;}return0;}60分思路每次查询循环扫 A 区间、B 区间。手动分类讨论正负情况拿区间的极值做乘法直接算出答案。变量含义maxaz/minazA 区间正数的最大、最小maxaf/minafA 区间负数的最大、最小maxbz/minbzB 区间正数的最大、最小maxbf/minbfB 区间负数的最大、最小typea1A 区间只有正数2A 区间只有负数3A 区间既有正数又有负数typea0标记 A 区间有没有 0typeb0标记 B 区间有没有 0在这里插入代码片#includebits/stdc.husingnamespacestd;longlongn,m,q,a[1005],b[1005];longlongcheck(intl1,intr1,intl2,intr2){inttypea00,typeb00;inttypea0,typeb0;longlongmaxaz0,minaz1e17,maxaf-1e17,minaf0;longlongmaxbz0,minbz1e17,maxbf-1e17,minbf0;longlongans0;for(intil1;ir1;i){if(a[i]0){maxafmax(maxaf,a[i]);minafmin(minaf,a[i]);}elseif(a[i]0){maxazmax(maxaz,a[i]);minazmin(minaz,a[i]);}elsetypea01;if(typea3)continue;if(a[i]0typea2)typea3;elseif(a[i]0typea0)typea1;elseif(a[i]0typea0)typea2;elseif(a[i]0typea1)typea3;}for(intil2;ir2;i){if(b[i]0){maxbfmax(maxbf,b[i]);minbfmin(minbf,b[i]);}elseif(b[i]0){maxbzmax(maxbz,b[i]);minbzmin(minbz,b[i]);}elsetypeb01;if(typeb3)continue;if(b[i]0typeb2)typeb3;elseif(b[i]0typeb0)typeb1;elseif(b[i]0typeb0)typeb2;elseif(b[i]0typeb1)typeb3;}if(typea1){if(typeb1)ansmaxaz*minbz;elseif(typeb2)ansminaz*minbf;elseansminaz*minbf;}elseif(typea2){if(typeb1)ansmaxaf*maxbz;elseif(typeb2)ansminaf*maxbf;elseansmaxaf*maxbz;}else{if(typeb1)ansmaxaz*minbz;elseif(typeb2)ansminaf*maxbf;elseansmax(minaz*minbf,maxaf*maxbz);}if(typea0)ansmax(ans,0ll);if(typeb0)ansmin(ans,0ll);returnans;}intmain(){cinnmq;for(inti1;in;i)cina[i];for(inti1;im;i)cinb[i];while(q--){intl1,r1,l2,r2;cinl1r1l2r2;coutcheck(l1,r1,l2,r2)endl;}return0;}