zoukankan      html  css  js  c++  java
  • CF Round 432 B. Arpa and an exam about geometry

    题目链接http://codeforces.com/contest/851/problem/B

    题目大意:纸上有三个点a, b, c,问有没有可能找到另一个点,将纸张绕着这个点选择一定角度后a与原来的b点重复,b与原来的c点重复。

    解题思路:由于旋转相当于在画弧,因此可以发现另外找的点到a, b, c的距离都相等。又由于旋转的角度一样,因此只要保证a, b, c不在同一条线上并且a,b距离等于b, c距离即可。

    可能需要注意精度问题。

    代码:

     1 const double eps = 1e-9;
     2 const double PI = acos(-1);
     3 ll powmod(ll a, ll b) { ll res = 1; a %= mod; assert(b >= 0); for (; b; b >>= 1) { if (b & 1)res = res*a%mod; a = a*a%mod; }return res; }
     4 const int iadd[] = {0, 1, 0, -1}, jadd[] = {1, 0, -1, 0};
     5 const int inf = 0x3f3f3f3f;
     6 const int maxn = 1e6 + 5;
     7 double ax, ay, bx, by, cx, cy;
     8 
     9 void solve(){
    10     double tmp = (cx - bx) * (by - ay) - (bx - ax) * (cy - by);
    11     if(fabs(tmp) < eps){
    12         puts("No");
    13         return;
    14     }
    15     double d1 = (ax - bx) * (ax - bx) + (ay - by) * (ay - by);
    16     double d2 = (cx - bx) * (cx - bx) + (cy - by) * (cy - by);
    17     if(fabs(d1 - d2) < eps){
    18         puts("Yes");
    19         return;
    20     }
    21     puts("No");
    22 }
    23 int main(){
    24     scanf("%lf %lf %lf %lf %lf %lf", &ax, &ay, &bx, &by, &cx, &cy);
    25     solve();
    26 }

    题目:

    B. Arpa and an exam about geometry
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Arpa is taking a geometry exam. Here is the last problem of the exam.

    You are given three points a, b, c.

    Find a point and an angle such that if we rotate the page around the point by the angle, the new position of a is the same as the old position of b, and the new position of b is the same as the old position of c.

    Arpa is doubting if the problem has a solution or not (i.e. if there exists a point and an angle satisfying the condition). Help Arpa determine if the question has a solution or not.

    Input

    The only line contains six integers ax, ay, bx, by, cx, cy (|ax|, |ay|, |bx|, |by|, |cx|, |cy| ≤ 109). It's guaranteed that the points are distinct.

    Output

    Print "Yes" if the problem has a solution, "No" otherwise.

    You can print each letter in any case (upper or lower).

    Examples
    input
    0 1 1 1 1 0
    output
    Yes
    input
    1 1 0 0 1000 1000
    output
    No
    Note

    In the first sample test, rotate the page around (0.5, 0.5) by .

    In the second sample test, you can't find any solution.

  • 相关阅读:
    STL之vector
    [洛谷P3942] 将军令
    [洛谷P2127] 序列排序
    [USACO07FEB]新牛棚Building A New Barn
    [洛谷P1120] 小木棍 [数据加强版]
    [洛谷P1438] 无聊的数列
    我的Emacs配置
    [CQOI2015]任务查询系统
    可持久化数组入门
    学习openstack(六)
  • 原文地址:https://www.cnblogs.com/bolderic/p/7476845.html
Copyright © 2011-2022 走看看