首页 > 其他分享 >AT_abc139f 题解

AT_abc139f 题解

时间:2023-01-19 09:45:28浏览次数:48  
标签:return int 题解 abc139f 极角 Vector double operator

我们注意向量加法的几何意义。

将多个向量向加时,最优的情况是所有边的极坐标单调。

但是有一种特殊情况,就是从极角最大的到极角最小的。

因此把所有向量极角排序,在做一些处理就行了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+100;
const double eps = 1e-15;
const double pi = acos(-1);
struct Vector{
    double x,y;
    Vector(double X=0,double Y=0){x=X,y=Y;}
}p[maxn];
Vector operator+(Vector x,Vector y){
    return Vector(x.x+y.x,x.y+y.y);
}
Vector operator-(Vector x,Vector y){
    return Vector(x.x-y.x,x.y-y.y);
}
Vector operator*(Vector x,double y){
    return Vector(x.x*y,x.y*y);
}
double polar(Vector x){
    return atan2(x.x,x.y);
}
double len(Vector x){
    return sqrt(x.x*x.x+x.y*x.y);
}
bool cmp(Vector p1,Vector p2)
{
    return polar(p1)<polar(p2);
}
int n;
double ans;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>p[i].x>>p[i].y;
    }
    sort(p+1,p+n+1,cmp);
    for(int i=1;i<=n;i++)
        p[i+n]=p[i];
    for(int i=1;i<=2*n;i++){
        for(int j=i;j<=2*n;j++){
            if((j-i+1)>n) continue;
            Vector res=Vector(0,0);
            for(int k=i;k<=j;k++){
                res=res+p[k];
            }
            ans=max(ans,len(res));
        }
    }
    printf("%.13f",ans);
}

标签:return,int,题解,abc139f,极角,Vector,double,operator
From: https://www.cnblogs.com/chifan-duck/p/17061069.html

相关文章

  • luogu P1452 题解
    管理备注:虽然此题解为乱搞,但是本乱搞是非常有意义的经典乱搞,故保留在题解区中供学习与参考。我们充分发扬人类智慧:将所有点全部绕原点旋转同一个角度,然后按\(x\)坐标......
  • luogu P8207 题解
    在暴力建边的情况下可以kruskal求生成树。但是这样是\(O(n^2)\)的。因为\(lcm(x,y)=x\timesy/\gcd(x,y)\)。所以\(\gcd(x,y)\)越大我们的答案越优。但是......
  • CF1768C 题解
    考虑构造。首先第一轮构造我们把第一次出现的数放到\(p\)里面,第二次出现的放到\(q\)里面。如果有数第三次出现呢?那么显然无解。那么现在\(p\)和\(q\)中都填了一......
  • 题解 P2480 [SDOI2010]古代猪文
    题意求\[g^{\sum\limits_{d|n}C_n^d}\bmod999911659\]\(n,g\le10^9\)一道非常好的数论题,用到了基本所有的基础数论知识。需要使用到的数论知识欧拉定理......
  • DBeaver展示大数据表卡死问题解决
    现象:当打开大表,比如大小达到几百M,并且获取所有行时,程序会卡死,无响应,只能强制关闭原因:DBeaver是基于java开发的,非常容易的可以想到是JVM内存设置过小导致溢出解......
  • ABC285GH题解
    ABC285GH题解G可以把\(2\)的覆盖视作一对匹配,显然在网格图上是二分图。那么对于\(?\)的处理,是可以匹配也可以不匹配,\(2\)是必须匹配。所以做上下界网络流即可,复杂......
  • 题解目录
    数据结构与算法这是我的一些算法题解与算法思考。按板块不断更新,希望对你有帮助。题目来自各大主流平台,有leetcode,有洛谷,有Acwing等。现在主力更新动态规划基础系列中,适......
  • P4012 题解
    前言题目传送门!更好的阅读体验?网络流\(24\)题:最大费用最大流。思路首先我们只看每一个点。是典型的方格取数问题,可以考虑费用流。对于一个相邻的、可以走到的点\(......
  • P3549 [POI2013]MUL-Multidrink 题解--zhengjun
    其他题解都是大码量的直接构造,来一发dp的题解。思路很明确,直接dp,然后输出路径即可。考虑先把\(1\ton\)的路径找出来,记为\(a_i(1\lei\lem)\)。那么肯定存在一种......
  • 【题解】P4482 [BJWC2018]Border 的四种求法
    思路SAM+树剖。好仙的题啊,做了一天。令\(\operatorname{lcs}(i,j)\)表示长度为\(i,j\)的前缀的最长公共后缀长度,则题目中的border可以等价转化成:求最大且满足......