- 博客(14)
- 收藏
- 关注
原创 CF 1138D Camp Schedule
https://codeforces.com/contest/1138/problem/D 题意: 有一种集训最佳安排,按照这个安排日程效果最佳。 现有一次集训,已经有了训练的日程。在只能调整顺序,不能修改总训练天数的情况下,尽量按照最佳训练日程进行。调整后后输出新的日程表。 实际就是给两个01串A和B,调整A的01顺序,让B尽可能多的作为字串在A中出现;解不唯一,输出一个符合要求的就可以...
2019-03-25 16:30:54
267
原创 CF 1138C
https://codeforces.com/problemset/problem/1138/C 题意: nxm条街道,每个路口有个高度已知的大厦,然后站在每个路口看,对应的两条街道的楼都可以将高度简化成1,2,3... 保证同一条街道上的大厦高度的大小关系不能改变的前提下,打印每个路口能看到的横竖街道上最高的简化过的楼层。 思路: 计算每个路口的两路排序和不同高度大厦的数量(9栋大厦可...
2019-03-25 16:07:40
211
原创 CF 1138B
https://codeforces.com/problemset/problem/1138/B 题意: 马戏团有n(偶数)个人,可以演小丑,可以演杂技,或者都会,或者都不会。 要分成人数相同的两组,第一组可以演小丑和第二组可以演杂技的人数相同。 思路: 暴力搜,不会T 算出四类人各有多少,然后遍历第一组中演小丑的人数,直接求解 (复杂度n^2, n<5000,不会T); ...
2019-03-25 15:46:32
181
原创 CF 1138A
https://codeforces.com/problemset/problem/1138/A 题意: 一排寿司,有金枪鱼和鳗鱼两种,找到最大的连续序列,一半全是金枪鱼,另一半全是鳗鱼。 思路: 遍历一遍,整合成一个序列,代表每种寿司连续出现多少次; 然后找到相邻对中,较小数最大的那对。 #include <iostream> #include <stdio.h&...
2019-03-25 15:20:56
162
原创 堆排序
HeapSort 利用最大堆的性质,arr[o]永远是最大堆的最大值,先建堆,然后依次将arr[o]放到堆末尾,然后维护 i-1 其本质是选择排序,每次选择最大值放置末尾,但是寻找最大值的过程使用了维护堆来实现,维护为logn,和二分类似。 #include #include #include using namespace std; #define T 1000000 #defi
2017-08-24 15:55:32
189
原创 归并排序
分成1 2元数组排序,然后逐步归并两个数组。 #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],tmp[T]; void bs(int *a, int l, int r) { int t=(l+r)/2; int c1=l,c2=t
2017-08-23 14:52:19
162
原创 基数排序
按位排序 ,一次从个位到最高位,是稳定排序方法。 十个基类为例 #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],tmp[T]; //返回最高位数 int maxbit(int *a, int n) { int d = 1; in
2017-08-23 11:50:07
189
原创 快速排序
分治法,排列(l,r),找到指定元素的最终位置key(左边均小于key,右边均大于key),然后递归(l,key-1),(key+1,r) #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],b[T]; //快速排序 void qsort(int *
2017-08-23 10:37:31
245
原创 折半插入排序
折半插入排序,优化了直接插入排序的寻找位置的过程,使用二分法寻找#include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],b[T]; //折半插入排序 int searchk(int *b,int l,int f,int key) { if(l==f
2017-08-23 09:41:31
186
原创 冒泡排序
冒泡,每次遍历会将最大的值交换到末尾,遍历n-1次完成排序。 #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],b[T]; //冒泡排序 void bubsort(int *a,int n) { for(int i=0;i<n-1;i++)
2017-08-23 09:32:24
233
原创 选择排序
选择排序 每次选择未排序的元素的min放在其排序后的位置 #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],b[T]; //选择排序 void selsort(int *a,int n) { for(int i=0;i<n-1;i++)
2017-08-23 09:28:13
180
原创 shell排序
增量递减div/=2 减少swap次数 分为div组组内进行直插排序 #include #include #include using namespace std; #define T 1000000 #define INF 999999 int n,a[T],b[T]; //希尔排序:优化的插入排序 void shellsort(int *a,int n) { int le
2017-08-23 09:22:46
506
原创 插入排序
直接插入排序 实现:a...a+k-1为已排序好的,插入新值在a+k,其值为key, 故将key通过swap(i,i-1)逐步移动至其位置,数组依旧有序。#include #include #include using namespace std; #define T 1000000 int n,a[T]; //插入排序 void insort(int *a,int n) {
2017-08-22 20:03:30
172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅