数星星

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数星星相关的知识,希望对你有一定的参考价值。

【题目描述】

YQL在农村长大,那时候大家喜欢晚饭过后在院子里纳凉,听不懂大人在说什么的YQL喜欢 抬头看天空,尤其是夏天的夜晚,天上的星星又多又亮。长大后YQL进城打工,每当想家 的时他还是喜欢抬头看看天,寻找另一边故乡的记忆。可是大城市里空气质量太差了,雾 霾天气横行,天上能看到的星星也越来越少了。YQL每次用一个正方形去覆盖自己所能看 到的星星,随着日子的推移,这个正方形越来越小了,悲伤的YQL希望你能告诉他这个正 方形的面积。为了让问题变得简单, YQL每次只会使用水平放置正方形来覆盖(不会旋转), 具体参照样例解释。 

【输入格式】

第一行一个整数n,表示星星的数量。 接下来共n行,每行2个正整数(a,b),表示该星星到X轴距离为b,到Y轴距离为a,这些星 星只会位于X轴的上方,Y轴的右方。 输入数据保证存在一个合法的正方形(面积非零)去覆盖这些星星。

【输出格式】

一个整数,表示能覆盖所有星星的最小正方形的面积。

【分析】

取x坐标的最大差值,y坐标的最大差值,在取最大,得到的答案是边长,可以直接算了。

技术分享图片

【代码】

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 
 7 int n;
 8 int maxx,maxy,minx,miny;
 9 ll ans;
10 
11 int main()
12 {
13     scanf("%d",&n);
14     maxx=0;
15     maxy=0;
16     minx=1000000;
17     miny=1000000;
18     for(int i=1;i<=n;i++){
19         int x,y;
20         scanf("%d%d",&x,&y);
21         maxx=max(x,maxx);
22         maxy=max(y,maxy);
23         minx=min(minx,x);
24         miny=min(miny,y);
25     }
26     ll xx=maxx-minx,yy=maxy-miny;
27     int edge;
28     if(xx>yy)edge=xx;else edge=yy;
29     ans=edge*edge;
30     printf("%lld
",ans);
31     return 0;
32 }

 

以上是关于数星星的主要内容,如果未能解决你的问题,请参考以下文章

数星星

一本通1536数星星 Stars

#10114 「一本通 4.1 例 2」数星星 Stars

一本通.1536数星星 Stars(树状数组)

codevs 2147 数星星

poj 2352 Stars 数星星 详解