zoukankan      html  css  js  c++  java
  • HDU4216 Computational Geometry?

    题意:已知炸弹的坐标,n个向量(n<100),从原点出发,每个向量可以走正向或者反向,找到一条路,使得路上离炸弹最远的点的距离最大,问最大距离

    题解:要求最远距离,也就是向量要尽量取同一方向才能更远,可以枚举方向,算出最大的就是答案

    #include <bits/stdc++.h>
    #define maxn 100
    #define PI 3.14159265358979323846
    #define Vector Point
    using namespace std;
    typedef long long ll;
    struct Point {
        double x, y;
    }a[maxn], c, e, b;
    int main(){
        int T, ca = 1, n;
        double ma;
        scanf("%d", &T);
        while(T--){
            scanf("%d%lf%lf", &n, &c.x, &c.y);
            for(int i=0;i<n;i++) scanf("%lf%lf", &a[i].x, &a[i].y);
            ma = 0;
            for(int j=0;j<360;j+=2){
                b.x=b.y=0;
                e.y = sin(2*PI/360*j);
                e.x = cos(2*PI/360*j);
                for(int i=0;i<n;i++){
                    if(e.x*a[i].x+e.y*a[i].y >= 0) b.x-=a[i].x,b.y-=a[i].y;
                    else b.x+=a[i].x,b.y+=a[i].y;
                    ma = max(ma, (b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y));
                }
            }
            printf("Case %d: %.3f
    ", ca++, sqrt(ma));
        }
        return 0;
    }
  • 相关阅读:
    游标、锁
    树形背包浅谈
    金字塔
    Codeforces Round #652 (Div. 2) 题解
    NOI1999 棋盘分割
    NEERC2002 Folding
    HDU4283 You Are the One
    Codeforces Round #646 (Div. 2) 题解
    洛谷 P1679 神奇的四次方数
    UVA12563 劲歌金曲
  • 原文地址:https://www.cnblogs.com/Noevon/p/8981932.html
Copyright © 2011-2022 走看看