本文主要是介绍问题 B: 小李数星星,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题 B: 小李数星星
时间限制: 1 Sec 内存限制: 128 MB
提交: 解决:
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
长大后小李进城打工,每当想家的时他还是喜欢抬头看看天,寻找另一边故乡的记忆。
可是大城市里空气质量太差了,雾霾天气横行,天上能看到的星星也越来越少了。
小李每次用一个正方形去覆盖自己所能看到的星星,随着日子的推移,这个正方形越来越小了,悲伤的小李希望你能告诉他这个正方形的面积。为了让问题变得简单,小李每次只会使用水平放置的正方形来覆盖(不会旋转),具体参照样例解释。
输入
接下来共n行,每行2个正整数(a,b),表示该星星到X轴距离为b,到Y轴距离为a,这些 星星只会位于X轴的上方,Y轴的右方。
输入数据保证存在一个合法的正方形 (面积非零)去覆盖这些星星
输出
样例输入
<span style="color:#333333">3
1 1
2 1
2 2
</span>
样例输出
<span style="color:#333333">1 </span>
提示
80%的数据,3<=n<=20, 1<=x<=100, 1<=y<=100
100%的数据,3<=n<=1000, 1<=x<=100000, 1<=y<=100000
这道题的模拟还是很明显的,取极端点作为边长就可以了。不过刚开始我没想清楚。还要比较极端值的大小的,不然会出矩形,不满足正方形的条件
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;long int n;
double a,b;int main(void)
{double xxmax,xxmin,yymax,yymin;while(scanf("%ld", &n)!=EOF){scanf("%lf%lf", &a, &b);xxmax=xxmin=a;yymax=yymin=b;// memset(x,0,sizeof(x));memset(y,0,sizeof(y));for(long int i=2;i<=n;i++){scanf("%lf%lf", &a, &b);if(xxmin>=a) xxmin=a;if(xxmax<=a) xxmax=a;if(yymin>=b) yymin=b;if(yymax<=b) yymax=b;}double s;s=max(xxmax-xxmin,yymax-yymin);s=pow(s,2);printf("%.0f\n",s);}return 0;
}
这篇关于问题 B: 小李数星星的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!