• 2024-11-15并行排序算法:双调排序
    引入有一个排列,你可以通过“比较并交换”这个操作将该排列排好序,即,每次选择一对数\((i,j)\),若\(a_i>a_j\)则交换,否则不交换。但是,你可以把多对\((i,j)\)放在一次操作里并行“比较并交换”,此时操作数记1,与数对的对数无关,但是每个\(i\)只能出现至多一次。要求操作数最小。
  • 2024-11-142024.11.14 鲜花
    双调排序的正确性证明暨第八交响曲题解推歌:DoubleAgent好多题解都写的或多或少有问题(包括那篇\(30\)分钟速通),终于是整明白了。首先给出双调序列的定义:满足一下条件之一的序列\(\existsk,\foralli<k,a_i>a_{i+1}\land\foralli>k,a_i<a_{i+1}\)即是单谷。其可以通过
  • 2023-10-24浅谈排序网络与并行排序算法
    对于普通的基于比较排序我们拥有一个复杂度下界\(O(n\logn)\),然而如果我们允许并行计算的话,将得到一些复杂度更优秀的计算方法。听到并行这个词许多人就会认为你有几个线程复杂度就除以几,所以线程堆得越多越好。但许多的算法问题都必须要满足你必须要算完A才能去计算B,比如对
  • 2023-08-13dp-双调欧几里德旅行商问题
    双调欧几里德旅行商问题目录双调欧几里德旅行商问题问题描述分析递推关系程序算法导论3rd-15.3问题描述平面上n个点,确定一条连接各点的最短闭合旅程。这个解的一般形式为NP的(在多项式时间内可以求出)J.L.Bentley建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即
  • 2023-08-08双调排序
    以后再说。#include<cstdio>#include<algorithm>usingnamespacestd;intread(){ charc=getchar();intx=0; while(c<48||c>57)c=getchar(); dox=(x<<1)+(x<<3)+(c^48),c=getchar(); while(c>=48&&c<=57); returnx;}