开场舞蹈 #普及组#

Posted wnfs

tags:

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

题目

Problem Description

在全世界人民的期盼下,2008年北京奥林匹克运动会终于隆重召开了!

为了展示中华民族博大精深的优秀传统文化,负责开幕式开场舞蹈的编排人员一丝不苟,每一个细节都力争完美。关于队伍是采用“天圆”阵还是“地方”阵的问题,大家讨论了七天七夜,仍没有结果。于是,他们希望借助计算机,计算两种阵型的成本。

队伍将排列在一个二维平面内,且必须以(0,0)点为中心使得队伍保持对称美。“天圆”阵是一个圆形,而“地方”阵则是一个边平行于坐标轴的正方形。由于某种因素,阵型要求覆盖某些点(可以在边上)。

你的任务是,计算出能够覆盖这些点的两种阵型的最小面积。

Input

第一行是一个整数n(1<=n<=100000),表示需要覆盖的点的个数。接下来n行,第i行是两个整数xi,yi(-1000<=xi,yi<=1000),表示第i个点的坐标位置(xi,yi)。

Output

第一行是一个整数s1,表示能够覆盖这些点的“天圆”阵的最小面积(pi=3.14,四舍五入)。第二行是一个整数s2,表示能够覆盖这些点的“地方”阵的最小面积。

Sample Input

4

0 0

0 2

5 0

8 0

Sample Output

201

256


思路

我靠,乍一看弄得我以为要搞图论,其实十分简单.

首先明确一下步骤

1.输入

2.循环求两个阵的面积

3.输出

好,具体实施请看下面↓

1.输入

输入代码不要我说,你们都懂吧~

1 scanf("%d", &n);
2 for(int i = 1; i <= n; i++)
3     scanf("%d%d", &x[i], &y[i]);

2.循环求两个阵的面积

其实也很easy啦

求方阵边长,就将每个给的坐标里,不管横纵,取最大值再*2.

再求面积.

注意,因为坐标正负与面积无关系,所以先自身取绝对值.

求圆阵也简单,利用勾股定理,求出半径.

 1 for(int i = 1; i <= n; i++)
 2 {
 3     x[i] = abs(x[i]);   
 4     y[i] = abs(y[i]);//绝对值
 5     /*-------------------------------*/
 6     jzbc = max(x[i] * 2, max(y[i] * 2, jzbc));//判断最大的边长
 7     jzmj = jzbc * jzbc;//求面积
 8     /*-------------------------------*/
 9     ybj = max(ybj, sqrt(x[i] * x[i] + y[i] * y[i]));//求最大半径
10     ymj = pi * ybj * ybj;//面积
11 }

好了,细节不在强调.

贴完整代码.

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <iostream>
 4 #include <cstring>
 5 #include <algorithm>
 6 using namespace std;
 7 int n;
 8 int x[100001], y[100001];
 9 const double pi = 3.14; 
10 int jzbc, jzmj;
11 double ybj, ymj;
12 int main()
13 {
14     scanf("%d", &n);
15     for(int i = 1; i <= n; i++)
16         scanf("%d%d", &x[i], &y[i]);
17     for(int i = 1; i <= n; i++)
18     {
19         x[i] = abs(x[i]);
20         y[i] = abs(y[i]);
21         /*-------------------------------*/
22         jzbc = max(x[i] * 2, max(y[i] * 2, jzbc));
23         jzmj = jzbc * jzbc;
24         /*-------------------------------*/
25         ybj = max(ybj, sqrt(x[i] * x[i] + y[i] * y[i]));
26         ymj = pi * ybj * ybj;
27     }
28     printf("%.0lf
%d",ymj , jzmj);
29 }

奶思~马飞~~

(由于错误代码错的太离谱了,所以就不贴了)

 

以上是关于开场舞蹈 #普及组#的主要内容,如果未能解决你的问题,请参考以下文章

1092 不高兴的津津

noip2010普及组复赛接水问题

舞蹈链(DLX)

markdown 岩组代码片段

普及组

[NOIP1997 普及组] 棋盘问题 [洛谷]