首页 > 其他分享 >梦熊 NOIP 十三连测模拟赛记录

梦熊 NOIP 十三连测模拟赛记录

时间:2024-10-22 19:59:17浏览次数:7  
标签:NOIP int double long second 连测 pair 梦熊 first

\(\text{By hhoppitree.}\)

\(\textbf{Round 1 A. }\) Apair

题目大意

给定平面直角坐标系上的 \(n\) 个整点,求任意两个不同的点的曼哈顿距离与欧几里得距离的比的最大值,多组询问。
数据范围:\(T\le10,n\le10^5\),\(\texttt{1s/512MB}\)。

思路分析

考虑我们就是要让连线段的角度最接近 \(\dfrac{\pi}{4}\) 或 \(\dfrac{3\pi}{4}\),将平面直角坐标系旋转对应角度后也就是要求连线段与 \(x\) 轴夹角最小的两个点。

按旋转后的 \(y\) 坐标排序后,最优解一定可以在两个点相邻的时候取到,证明可以画画图。

最终的时间复杂度为单组询问 \(\mathcal{O}(n\log n)\)。

代码呈现

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;
const long double pi = acos(-1.0);

int n;
pair<int, int> c[N];

int cmp1(pair<int, int> x, pair<int, int> y) {
    return x.first + x.second < y.first + y.second;
}

int cmp2(pair<int, int> x, pair<int, int> y) {
    return x.first - x.second < y.first - y.second;
}

long double calc() {
    long double res = 0;
    for (int i = 1; i < n; ++i) {
        int x = abs(c[i].first - c[i + 1].first), y = abs(c[i].second - c[i + 1].second);
        res = max(res, (x + y) / hypot((long double)x, (long double)y));
    }
    return res;
}

signed main() {
    freopen("Apair.in", "r", stdin);
    freopen("Apair.out", "w", stdout);
    int T; scanf("%d", &T);
    while (T--) {
        scanf("%d", &n);
        for (int i = 1; i <= n; ++i) scanf("%d%d", &c[i].first, &c[i].second);
        sort(c + 1, c + n + 1, cmp1);
        long double res = calc();
        sort(c + 1, c + n + 1, cmp2);
        printf("%.20Lf\n", max(res, calc()));
    }
    return 0;
}

\(\textbf{Round 1 D. }\) Dmagic

标签:NOIP,int,double,long,second,连测,pair,梦熊,first
From: https://www.cnblogs.com/hhoppitree/p/18493638

相关文章

  • NOIP 膜你赛 做题记录
    \(\texttt{Day1T1}\)题目大意:定义\(f(x)\)表示正整数\(x\)在十进制下的数位和,如\(f(114514)=1+1+4+5+1+4=16\)。现在小\(C\)有个好数集合\(S\),他给出三个正整数\(n,x,k\),并告诉小\(D\)这个集合的性质:\(x\inS\)。如果正整数\(y\)满足\(y\len,y−f(y)\ti......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛11
    前言T1不知道啥是冒泡排序,理解了一会儿题面代码发现是啥意思了于是就签了。后面的题都不是很可做,T2、T4计数,T3高级玩意看不懂。但是T2有点可做,但我的DP不知道哪儿假了,暴力还打挂了,不然加个bitset就操过去了。T1冒泡排序\(i\)只能和\(i+k,i+2k,……\)换,对于每一......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛11
    Rank考前不挂就是赢A.冒泡排序签,简单的有点格格不入。发现错误代码实质上是将原序列划分成了若干个连通块,并对每个连通块做一遍排序。并查集维护,\(\mathcal{O(n)}\)扫一遍合并连通块,然后按顺序输出即可。复杂度最坏\(\mathcal{O(n\logn)}\)。点击查看代码#include<b......
  • 多校A层冲刺NOIP2024模拟赛11
    多校A层冲刺NOIP2024模拟赛11\(T1\)A.冒泡排序\(100pts/100pts/100pts\)将循环\(j\)提到外面,本质上是对\(a_{j},a_{j+k},a_{j+2k},\dots,a_{j+xk}\)进行排序迭代的过程。按下标模\(k\)的余数分别排序即可。点击查看代码inta[1000010];vector<int>b[1000......
  • Public NOIP Round #7 T3 黑白棋子 题解
    Description有一棵\(n\)个点的树,顶点的编号为\(1\)到\(n\)。对于树中的每个顶点,可能存在一个白色的棋子、一个黑色的棋子,或者没有棋子。树上正好有\(w\)个白色棋子和\(b\)个黑色棋子。另外,对于每一对具有相同颜色棋子的顶点,存在一条路径,路径上的每个顶点都包含相同颜色......
  • 多校A层冲刺NOIP2024模拟赛11
    又双叒叕垫底了。rank11,T190,T212,T35,T435。accdoer上rank44,T1100,T20,T35,T435。难度难评,T1签,剩下的不可做?死磕T3了,猜一个结论假一个,打完暴力遗憾离场。好像两个题库都挂了几分,不管了,赛前挂分RP就++。慢报:5k_sync_closer成功地取得了NFLS模拟赛第一名的好成绩。冒泡......
  • 【题解】Solution Set - NOIP2024集训Day58 字符串
    【题解】SolutionSet-NOIP2024集训Day58字符串https://www.becoder.com.cn/contest/5658「CF1466G」SongoftheSirens考虑对于\(s_i\),算钦定必须覆盖到\(t_i\)的匹配个数\(f_i\)。注意到\(s\)每次长度都会\(\times~2\)左右,其长度在\(O(\log|w|)\)的时候就......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛10
    前言不想说啥了最简单的一题是紫,去死吧只改了T1、T2,T2原题翻译和赛时题面描述都很唐,赛后断断续续加了好多hack。T1岛屿设\(f_{a,b}\)表示\(a\)条两端同色链,\(b\)条两端异色链时连通块数量的期望。红红蓝蓝相连得到红蓝\(\tof_{a-1,b+1}\)。红红红蓝相连得到红红......
  • NOIP2024集训Day57 哈希
    NOIP2024集训Day57哈希A.[CF213E]TwoPermutations考虑到都是排列,值域连续,于是\(a\)都加\(x\)之后相当于在值域上平移了一段,也是连续的。由于要进行比较,个很容易想到哈希。\(a\)的哈希值很好维护,每次平移一位加上\(\sumbase^i\)即可。考虑如何快速取出\(b\)中在......
  • [赛记] 多校A层冲刺NOIP2024模拟赛09 && 10
    排列最小生成树(pmst)50pts又是诈骗题,然后又不会。。。暴力很暴力,直接建个完全图跑Kruskal即可;正解考虑如果我们连接编号相邻的点,那么每个边的边权都小于$n$真能考虑到吗?;所以我们最终的最小生成树中的边边权都小于$n$;那么对于$|p_i-p_j|\times|i-j|<n$......