数星星
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 }
以上是关于数星星的主要内容,如果未能解决你的问题,请参考以下文章