
排序算法
文章平均质量分 55
DCrusher
这个作者很懒,什么都没留下…
展开
-
桶排序
桶排序是一种用空间换时间的排序方法,它的时间复杂度为O(n)。其基本思想是:如果要对一些数据范围确定的数据进行排序时,需要先开一个涵盖待排数据的数据范围的辅助数组t,然后开始处理数据,对于一个数据k,则将t[k]加1,像是把数据k装入了t[k]这个桶。处理完所有数据后,对于t[i]如果非空(即t[i]>0),就输出t[i]个i,将装入桶的数据还原回来。#includeusing namesp原创 2015-10-24 07:03:39 · 523 阅读 · 0 评论 -
BZOJ3626LCA
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1374 Solved: 503 Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次原创 2016-03-27 14:46:26 · 728 阅读 · 0 评论 -
归并排序求逆序对
题目描述 Description 给定一个序列a1,a2,…,an,如果存在i#include<cstdio>using namespace std;int a[100001],r[100001],n,i;long long sum=0;void mergesort(int s,int m,int t){ int l,j,k; if (s==t) return;原创 2015-10-31 21:45:47 · 567 阅读 · 0 评论 -
BZOJ1370Gang团伙
1370: [Baltic2003]Gang团伙 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 446 Solved: 222 Description 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1、 我朋友的朋友是我的朋友; 2、 我敌人的敌人是我的朋友; 所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即原创 2016-02-21 16:45:10 · 505 阅读 · 0 评论 -
【NOI2015】BZOJ4195程序自动分析(并查集+离散化)
4195: [Noi2015]程序自动分析Time Limit: 10 Sec Memory Limit: 512 MB Submit: 836 Solved: 361 [Submit][Status][Discuss] Description在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,原创 2015-12-16 16:39:13 · 995 阅读 · 1 评论 -
BZOJ1607 Patting Heads轻拍牛头
1607: [Usaco2008 Dec]Patting Heads 轻拍牛头Time Limit: 3 Sec Memory Limit: 64 MB Submit: 1384 Solved: 722 [Submit][Status][Discuss] Description今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成原创 2015-12-19 19:20:30 · 1332 阅读 · 0 评论 -
堆排序
堆排序(heapsort)是指利用堆这种数据结构的一种排序算法。堆是一个完全二叉树的结构,即堆结构除最后一层外,其他各层都是满的,且最后一层的结点都靠在左边,并同时满足子结点的值总是小于或者大于它的父结点的值。 堆的基本操作: 1.向堆中插入一个元素 向有n个元素的堆中插入一个新元素,应当把元素放在n+1号结点,然后与其父结点比较大小,若大于其父结点,则保持了堆的性质,否则与其父结原创 2015-10-31 21:59:50 · 434 阅读 · 0 评论 -
BZOJ1034泡泡堂BNB
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂。每一场比赛前,对阵双方的教练向组委会提交一份参赛选手的名单,决定了选手上场的顺序,一经确定,不得修改。比赛中,双方的一号选手,二号选手……,n号选手捉对厮杀,共进行n场比赛。每胜一场比赛得2分,平一场得1分原创 2015-10-27 19:46:25 · 638 阅读 · 0 评论 -
归并排序
将两个或两个以上的有序表,合并成一个有序表,这种操作称为归并操作。若将两个有序表合并成一个有序表,则称为二路归并。同理,也有三路归并、四路归并等。二路归并比较简单常用,现在我们只讨论二路归并。归并的过程是:比较a[i]和a[j]的大小。若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令j和k分别加1。如此循环下去,直到其中的一个有序表取完,然后再将另一个有序表中剩余的原创 2015-10-24 07:35:13 · 419 阅读 · 0 评论 -
BZOJ1334Elect
1334: [Baltic2008]Elect Time Limit: 10 Sec Memory Limit: 162 MB Submit: 449 Solved: 246 Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党退出后,其它党原创 2016-03-29 10:00:59 · 984 阅读 · 0 评论