首页 > 其他分享 >luogu P1452 题解

luogu P1452 题解

时间:2023-01-19 09:45:12浏览次数:38  
标签:1.14 P1452 int 题解 乱搞 坐标 luogu 排序

管理备注:虽然此题解为乱搞,但是本乱搞是非常有意义的经典乱搞,故保留在题解区中供学习与参考。

我们充分发扬人类智慧:

将所有点全部绕原点旋转同一个角度,然后按 \(x\) 坐标排序。

根据数学直觉,在随机旋转后,答案中的两个点在数组中肯定不会离得太近。

所以排序后把前 \(20000\) 个点和后 \(20000\) 个点暴力枚举更新答案。

这样开 o2 就可以过了。

可以想一想这样乱搞为什么能过?

假设不旋转,出题人会使用一组 \(x\) 轴坐标特别远,\(y\) 轴坐标特别近的数据来卡你。

但是旋转后 \(x\) 轴坐标和 \(y\) 轴坐标的差会变小。

所以就可以通过数据。

此外还有其他的排序方法。

比如将 \(x\) 轴坐标与 \(y\) 轴坐标的乘积作为排序关键字。

原理都是让坐标分布更均匀。

#include<bits/stdc++.h>
#define double long double
using namespace std;
const int maxn=4e5+5;
struct node{
    int x,y,lx,ly;
}p[maxn];
bool cmp(node A,node B){
    if(A.x<B.x||(A.x==B.x&&A.y<B.y))
        return 1;
    else
        return 0;
}
int dis(node A,node B){
    return (A.lx-B.lx)*(A.lx-B.lx)+(A.ly-B.ly)*(A.ly-B.ly);
}
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int X,Y;
        cin>>X>>Y;
        p[i].lx=X;
        p[i].ly=Y;
        p[i].x=X*cos(1.14)-Y*sin(1.14);
        p[i].y=X*sin(1.14)+Y*cos(1.14);
    }
    sort(p+1,p+n+1,cmp);
    int ans=0;
    for(int i=1;i<=min(20000,n);i++){
        for(int j=n-min(20000,n)+1;j<=n;j++){
            ans=max(ans,dis(p[i],p[j]));
        }
    }
    cout<<ans<<'\n';
}

标签:1.14,P1452,int,题解,乱搞,坐标,luogu,排序
From: https://www.cnblogs.com/chifan-duck/p/17061073.html

相关文章

  • luogu P8207 题解
    在暴力建边的情况下可以kruskal求生成树。但是这样是\(O(n^2)\)的。因为\(lcm(x,y)=x\timesy/\gcd(x,y)\)。所以\(\gcd(x,y)\)越大我们的答案越优。但是......
  • CF1768C 题解
    考虑构造。首先第一轮构造我们把第一次出现的数放到\(p\)里面,第二次出现的放到\(q\)里面。如果有数第三次出现呢?那么显然无解。那么现在\(p\)和\(q\)中都填了一......
  • 【luogu AGC031E】Snuke the Phantom Thief(网络流)
    SnukethePhantomThief题目链接:luoguAGC031E题目大意有n个特殊点分布在二维平面上,每个点有坐标和价值。你要选一些点,总价值是你选的点的价值和。然后有一些约束,......
  • 题解 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可以等价转化成:求最大且满足......