首页 > 其他分享 >随机排序

随机排序

时间:2023-01-15 10:34:29浏览次数:27  
标签:直线 10 times 坐标 排序 随机

概述

  • 如果元素满足某种序,那么在排序后我们可以直接得到答案。但事实上,大部分情况下没有这么优美的结论。

  • 虽然如此,我们还是可以猜测将元素按某种逻辑排序后,答案的来源(可能是序列中的某几个元素)不会相距太远。

  • 故我们可以用某种逻辑较随机地多次排序,以期望获得高度近似的答案。不过,正确率就...不可知了。

  • 据说这一思路与“局部敏感哈希”比较相像。

例题

2012 ASTAR(百度之星) 复赛 T3 最右交点

  • 题意:给定平面上的 \(n\) 条直线。对于每条直线,求它与其他所有直线构成的交点中,\(x\) 坐标最大的一个交点的坐标。

  • 数据范围:\(n\leqslant 10^5\),保证每条直线至少和一条直线相交。得分采用 SPJ,即单点得分正相关于该点正确率。

  • 考虑一个简单的事情:斜率越接近的两条直线,它们在 \(y\) 坐标上的“相对距离”减小得越慢。

  • 故考虑用多条 \(l:x=T\) 的竖线去截所有直线。

  • 如果两条直线的斜率很接近,那么在足够多条 \(l:x=T\) 的直线截过之后,至少一条 \(l:x=T\) 上两者的“截距”很接近的概率非常大。

  • 换言之即有很大概率存在一条我们随出来的 \(l:x=T\),这条直线与 \(l_1,l_2\) 的交点非常接近。

  • 则考虑按与 \(l:x=T\) 的交点将所有直线排序,然后暴力枚举每条直线,向下(不用向上是因为上面的找过你了)找 \(t\) 条直线暴力计算交点,更新答案。

  • 推而广之,想到对 \(l:y=T\) 甚至任意的 \(l:y=kx+b\) 可能也有类似的结论。不妨都做一做,简单起见,\(l:y=kx+b\) 可以直接随一个给出的直线做代替。

  • 总复杂度 \(O(times\times (n\log n+n\times t))\),其中 \(t\) 为暴力范围。大约可以取 \(times=100,t=20\)。就某老年咸鱼教练的记忆,效果很不错。

平面最近点对(系列)

  • 题意:给定二维平面上的 \(n\) 个点(考虑到掉精度,都是格点),求其中距离最近的两个点的距离的平方(还是躲掉精度)。

  • 数据范围:

    • \(n\leqslant 10^4,2\times 10^5,4\times 10^5(350ms)\) 不等,

    • \(x_i,y_i\leqslant 10^9\)。

  • 最后再说一遍,要发扬人类智慧了!

  • 使用伟大的数学直觉:如果数据是随机的,那么最近的两个点的 \(x\) 坐标差的不会太远,可以考虑按 \(x\) 坐标排序然后向后暴力配对。

  • 可是坐标显然不会随机。没关系,我们有人类智慧:随机旋转坐标系!

  • 这样一来,数据的构造性就显著减弱了。

  • 这一做法能通过第二档数据,但会被第三档卡掉,多次旋转的结果我不了解但应该是不行,毕竟时间不够,会 T。

  • 难道就止步于此了吗?不!考虑一下在构造数据中为什么这样做很可能错:因为 \(y\) 坐标相差太大!

  • 所以我们可以随机旋转,然后按 \(x+y\) 为关键字排序!

  • 这一做法的效果没有试过。可能也被卡掉了,emmm...不然应该没必要用最后这种不那么符合数学直觉的方式:

  • 改用 \(x\times y\)!

  • 为啥?...我也不理解...这无论是把点平移到哪个象限,看起来都很不符合数学直觉,但事实就是这样过了。确实得 %。

标签:直线,10,times,坐标,排序,随机
From: https://www.cnblogs.com/weixin2024/p/17053157.html

相关文章

  • 随机选择
    概述随机选择通过随机地取总数据的某一部分,来尝试着获取总体数据或总体数据的代表性部分的信息,恰如抽样调查。例题CodeChefMSTONE题意:给出落在\(7\)条直线上的......
  • 随机探测
    概述随机探测通过用随机的探针测试某个黑箱,来获得该黑箱高度可能的状态。太抽象?没关系。就来例题。例题测素给定一个数,判断它是否是质数。我们知道,由费马......
  • 排序
    计数排序计数排序是一种计算每个数字出现次数后做值域上的前缀和以对各元素排序的排序方式。计数排序是一种非比较排序。具体实现:依次枚举每个元素,将其丢进其关键......
  • Stata:排序
    使用bysort,在分组操作的情况下还要根据额外的变量进行排序时,使用bysortgroupvar(rankvar):正序排序sysusecensus,clear*保留每个区域内人口最少的州,因此按每个区......
  • MySql查看数据库及表容量大小并排序
    MySql查看数据库及表容量大小并排序带刀医生关注IP属地:江苏2022.04.1120:05:34字数85阅读1,219MySql查看数据库及表容量⼤⼩并排序查看所有数据库容量⼤⼩......
  • Python实现排序
    冒泡排序交换排序相邻元素两两比较大小,有必要则交换元素越小或越大,就会在数列中慢慢的交换并“浮”向顶端,如同水泡咕嘟咕嘟往上冒核心算法排序算法,一般都实现为就......
  • Collectors.groupingBy分组后的排序问题
    Collectors.groupingBy分组后的排序问题https://blog.csdn.net/aiji7208/article/details/101291632?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.n......
  • AcWing 786.第k个数(快速排序)
    [原链接](https://www.acwing.com/problem/content/788/题目#include<cstdio>#include<iostream>#include<cstdlib>usingnamespacestd;inta[100100];voidqu......
  • NIST随机性测试套件下载,安装,实验
    参考博客NIST随机性测试美国国家标准与技术研究所提供的测试,一共包括16种测试手段,具体内容可参考此博客NIST下载与安装环境:Windows11下载:NIST官网链接点击downlo......
  • 随机过程的思维导图和笔记
    简单梳理了一下随机过程前四章的内容,这四章联系还是很紧密的。以第一章为基础,延伸出第二章的多种poisson过程,包括复合、稀释、叠加以及条件分布的poisson过程。第三章应用......