FZU 2140 Forever 0.5(构造)

原创 2016年06月01日 17:22:01

Forever 0.5

Description

Given an integer N, your task is to judge whether there exist N points in the plane such that satisfy the following conditions:

1. The distance between any two points is no greater than 1.0.

2. The distance between any point and the origin (0,0) is no greater than 1.0.

3. There are exactly N pairs of the points that their distance is exactly 1.0.

4. The area of the convex hull constituted by these N points is no less than 0.5.

5. The area of the convex hull constituted by these N points is no greater than 0.75.

Input

The first line of the date is an integer T, which is the number of the text cases.

Then T cases follow, each contains an integer N described above.

1 <= T <= 100, 1 <= N <= 100

Output

For each case, output “Yes” if this kind of set of points exists, then output N lines described these N points with its coordinate. Make true that each coordinate of your output should be a real number with AT MOST 6 digits after decimal point.

Your answer will be accepted if your absolute error for each number is no more than 10-4.

Otherwise just output “No”.

See the sample input and output for more details.

Sample Input

3235

Sample Output

NoNoYes0.000000 0.525731-0.500000 0.162460-0.309017 -0.4253250.309017 -0.4253250.500000 0.162460

Hint

This problem is special judge.


解题思路:

有n个点,要求:

1.任意两点的距离≤ 1.0

2.每个点与原点的距离≤1.0

3.有N对点间的距离=1.0

4.N个点形成的面积≥0.5且≤0.75

可以先取一个以原点为顶点,另外两个点在单位圆上的正三角形


其他的点就在圆弧BC上,将BC等分即可。

由于只有三个点时,并不符合面积要求。因此至少需要四个点。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

const double pi = acos(-1.0);

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        if(n < 4)
            puts("No");
        else{
            puts("Yes");
            printf("%.6lf %.6lf\n",0.0,0.0);
            printf("%.6lf %.6lf\n",1.0,0.0);
            printf("%.6lf %.6lf\n",0.5,sqrt(3.0)/2.0);
            double angle;
            for(int i = 1; i <= n-3; ++i){
                angle = (pi/3.0/(n-2))*i;
                double x = cos(angle);
                double y = sqrt(1-x*x);
                printf("%.6lf %.6lf\n",x,y);
            }
        }
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

FZU Problem 2140 Forever 0.5(计算几何构造,依旧考查思维)

FZU Problem 2140 Forever 0.5(计算几何构造,依旧考查思维)
  • queuelovestack
  • queuelovestack
  • 2016年09月26日 10:02
  • 408

第六届福建省大学生程序设计竞赛(FZU2212—FZU2221)

Super Mobile Charger 题目链接: http://acm.fzu.edu.cn/problem.php?pid=2212 解题思路: 水题。 AC代码: #include #in...
  • piaocoder
  • piaocoder
  • 2016年04月22日 15:38
  • 1318

[矩阵快速幂] fzu 2117 特殊的数

题意: 中文题不解释 注意是n位数! 思路: 中文在群里问了大神们,终于领悟到这种递推的精华 对于给定的n都会包含有四种状态 0、7和9的个数都是奇数 1、7是奇数,9是偶数 2、7是...
  • wdcjdtc
  • wdcjdtc
  • 2014年11月18日 21:39
  • 529

node js 进程守护神forever

forever是个啥
  • JBBOY
  • JBBOY
  • 2014年06月27日 17:01
  • 17375

centos7 网络设置

今天在一台PC上安装了CentOS 7,当时选择了最小安装模式,安装完成后马上用ifconfig查看本机的ip地址(局域网已经有DHCP),发现报错,提示ifconfig命令没找到。 [root...
  • beiquandeng
  • beiquandeng
  • 2016年01月16日 14:41
  • 1129

FZU 2191 完美的数字

Problem 2191 完美的数字 Accept: 50    Submit: 146 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Pr...
  • wr132
  • wr132
  • 2015年05月03日 21:18
  • 620

FZU 2195 检查站点

Description 在山上一共有N个站点需要检查,检查员从山顶出发去各个站点进行检查,各个站点间有且仅有一条通路,检查员下山前往站点时比较轻松,而上山时却需要额外的时间,问最后检查员检查完所...
  • jtjy568805874
  • jtjy568805874
  • 2016年08月10日 17:09
  • 151

FZU 1911 矩阵快速幂

题意: 给一个n,让你输出一个S(n)*S(n)的矩阵 S(n)是前n项斐波那契的和%m 这个矩阵必须满足每一行和每一列中任意两个的和不能相等 思路: 奇数肯定是无解的,因为奇数总有一行是...
  • qq_27925701
  • qq_27925701
  • 2016年07月27日 18:25
  • 149

FZU 2082 树链剖分

点击打开链接 题意:中文 思路:最基础的树链剖分,区间求和以及单点更新,结果要用long long 就没什么了#include #include #include #include #in...
  • Dan__ge
  • Dan__ge
  • 2016年07月12日 10:52
  • 810

FZU 1752 A^B mod C (快速幂+快乘)

Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description Given A,B,C, You should ...
  • xiaosshhaa
  • xiaosshhaa
  • 2017年02月20日 21:11
  • 733
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FZU 2140 Forever 0.5(构造)
举报原因:
原因补充:

(最多只允许输入30个字)