[codeforces 1315A] Dead Pixel 令人讨厌的行,列,横,纵,坐标 表格助阵

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;
}
发布了552 篇原创文章 · 获赞 531 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/mrcrack/article/details/104475535