【暑假培训】8.22-8.31校训

 DAY 1

1.1排序算法

1.2排序的应用

1.3复杂度分析

 

 

 

 

 

1.1 排序算法

  •  基于比较交换的排序算法
    • 选择排序
      • 思路:不断选择剩下数中最大的数
      • 实现:一个序列,分为已排序区域和未排序区域;每次选择后更新(扩大)已排序区域,直至未排序区域长度为0
      • 代码:
    •  冒泡排序
      • 思路:逐个进行比较交换
      • 很明显效率比较低
    • 插入排序
      • 思路:模拟摸扑克牌的过程?和选择排序的维护序列是差不多的(都是一个序列分为已排序区域和未排序区域)
      •       
    • 希尔排序

1.2.排序的应用

 

 

-预处理

-多关键字排序

 

 

 

 

 

 

-离散化

 

 

 

 

 

 

 

1.3复杂度分析

 

  • 阶的比较
  • 排序算法复杂度
    •   选择排序
    •     冒泡排序
    • 插入排序
    • 桶排序
    • 归并排序
    • 快速排序
    • 堆排序
  • 复杂度分析技巧

DAY 2

模测模测

 

1.归并排序求逆序对

2.电线杆上的小广告

3.逛画展

4.生日礼物

DAY 3

1.1队列

1.2广度优先搜索

1.3循环队列

1.4双向队列

1.5单调栈

1.6单调队列

 

 

1.1队列

1.1.1 手写队列

1.1.2 循环队列

  • 只可以存储size-1个元素
  • 通过取模实现

 

 

 

1.2广度优先搜索

 

 

1.2.1dfs与bfs

 

dfs:“能达到的都是兄弟”

bfs:“能达到的都是我儿子”(雾)

 

 

 

1.2.2为什么我们不能用dp的三种基本方法做dfs

/  如何用bfs实现dp的思想

 

 

 

 

 

 

 

 

 dp与dfs

 

 

 

 

 1.3循环队列

 

为什么要使用循环队列

 

实现

 

1.4双向队列(双端队列)

 

luogu签到该死的准

果然啥都没听懂==

 

 

 

 

 

 

1.5单调栈

    • 应用1:询问区间最值

 

            

 

 

 

              

               ○应用2:找到左右两侧第一个比自己小的位置

                    ■例题:poj2559

比栈顶元素更符合单调栈单调性的代替 原来的栈顶元素

 

1.6单调队列

 

    • 应用1:解决特殊的区间最值问题(**区间的单调性)
      • 这就不需要二分啦

 

 

 

                ○应用2:滑动窗口(求满足条件的最短区间)

 

stl队列不方便调试,只用一个栈、队列或者单调队列时最好用手写


 

 

DAY 4

1.1二分

1.2倍增

1.3链上分治

 

 

 

1.1.二分

【题】二分求某个数的下标

 

【题】单峰数组(肯定是前段上升后段下降,不然没法做)→三分

 

 

序列二分的应用:求和问题

     1.二分的思路:先找到大于等于aj的第一个数,再二分找不等于aj的第一个数,两个坐标差就是

     2.单调栈/单调队列

          如图  (两边走指针)

 

序列二分一般有两种方法:

1.二分 :对数据排序, 对每个询问二分(可以处理在线询问,复杂度更大)

2.走指针:对数据和询问排序,一次扫描解决所有问题(只能离线询问,复杂度更小)

 

二分答案:关键词:“最大值最小”

 

posted @ 2019-08-25 08:06  QUEKI嶺冬  阅读(136)  评论(0编辑  收藏  举报
/*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ .pln{color:#4d4d4c}ol.linenums{margin-top:0;margin-bottom:0;color:#8e908c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal!important;}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.pun{color:#4d4d4c}.opn{color:#4d4d4c}.clo{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}} /*下面是我设置背景色,字体大小和字体*/ .cnblogs-markdown code{ background:#fff!important; } .cnblogs_code,.cnblogs_code span,.cnblogs-markdown .hljs{ font-size:16px!important; } .syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .syntaxhighlighter table td, .syntaxhighlighter table tr, .syntaxhighlighter table tbody, .syntaxhighlighter table thead, .syntaxhighlighter table caption, .syntaxhighlighter textarea { font-size: 16px!important; } .cnblogs_code, .cnblogs_code span, .cnblogs-markdown .hljs{ font-family:consolas, "Source Code Pro", monaco, monospace !important; } //以上是代码高亮 /* 文字特效 */