Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) 比赛人数3742
[codeforces 1315A] Dead Pixel 令人讨厌的行,列,横,纵,坐标 表格助阵
总目录详见https://blog.csdn.net/mrcrack/article/details/103564004
在线测评地址https://codeforces.ml/contest/1315/problem/B
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
A - Dead Pixel | GNU C++11 | Accepted | 31 ms | 0 KB |
看到了,如下两句,脑子顿时浆糊。令人讨厌的行,列,横,纵,坐标。要是能不出现x,y该多好啊。
It has coordinates (x,y)
You can consider columns of pixels to be numbered from 0 to a−1, and rows — from 0 to b−1.
把脑袋弄清醒,靠的是(0≤x<a,0≤y<b),只要把握了x被a约束,y被b约束,管它谁是行,谁是列。
之后的代码,因为比赛时脑子浆糊,可能会搞错了行与列,但x被a约束,y被b约束,是肯定能把握住的,故能AC.
具体思路,打开Excel,在里面画图很方便,看如下表格:
行b=5,列a=4,坏点坐标(1,1)
上图中,红色面积计算
左边面积=5*1即b*x,右边面积=5*(5-1-1)即b*(a-x-1)
上面面积=4*1即a*y,下面面积=4*3即a*(b-y-1)
在4个红色面积里取最大值,即为答案。
下面是比赛时原汁原味的AC代码
#include <stdio.h>
int max(int a,int b){
return a>b?a:b;
}
int main(){
int t,a,b,x,y,left,right,up,down;
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d",&a,&b,&x,&y);
left=a*y;
right=a*(b-y-1);
up=b*x;
down=b*(a-x-1);
a=max(left,right);
b=max(up,down);
printf("%d\n",max(a,b));
}
return 0;
}