2个坑点
城市修建
http://www.nowcoder.com/questionTerminal/c1fa9060fae2433085e1c21f5d7e94c6
一、2个注意事项
- 1、关于x和y的范围,是int的最小到最大,所以如果是int*int可能会溢出,所以要用long long
PS:这个题目如果要进阶,可以修改x和y的范围是long long,那么就要用大数,目前本题不需要大数 - 2、关于,最大的『正方形』这个如何获得,注意,排序条件不能是
a.x和b.x不同,则返回a.x<b.x 如果相同,则返回a.y<b.y
因为,可能会出现这样数据 - 所以规则是——x获得最大和最小,y获得最大和最小『这样才是真正的排序规则』
二、AC代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int n;
struct node
{
long long x;
long long y;
}solve[maxn];
bool cmpx( node a, node b )
{
return a.x<b.x;
}
bool cmpy(node a, node b)
{
return a.y<b.y;
}
int main()
{
while( ~scanf("%d",&n) )
{
int loop=n;
while( loop-- )
{
scanf("%lld%lld",&solve[loop].x , &solve[loop].y );
}
sort( solve, solve+n, cmpx );
long long x=solve[n-1].x-solve[0].x;
sort( solve, solve+n, cmpy );
long long y=solve[n-1].y-solve[0].y;
long long num=max( x, y );
printf("%lld\n", num*num );
}
return 0;
}
查看34道真题和解析
