清北学堂2019.7.14

Day 2 林永迪

首先,先将了一波昨天没讲完的贪心。。。

过河问题:

 

首先,经过总结,发现应该让最慢的两个人一起过河

不妨先设a,b,c,d速度由快到慢,则有两种情况

  1. ac a ad a ————> c+d+2*a
  2. ab a cd b ————> d+2*b+a

这两种求一个min就可以了(其实只与b,c的大小有关)

还有另外一种更为玄学的方法——k搜索

然后便是分治算法了

先介绍一下二分(屠龙宝刀点击就送

首先是NOIP2012借教室

 

这个题在之前好像线段树会卡掉(毕竟之前的老年机。。。)

然后呢,显然是二分

一会看连接吧qwq

 

 

 

然后是三分(一般是单峰函数)

比较实数:double eps=1e-8

 

多峰的函数把他切割成好多好多个单峰函数,然后跑三分。。。(这是什么操作)

 

分块

 

 

  1. 将区间分为√n那么就会有三种情况(在[l,r]tag标记)O(n√n)
  2. 分块(块大小√n),若两个数在同一块中,则暴力遍历,A数组是原数组,B数组是每一块(经过排序后)的数组。若不在同一块中,则只需遍历块,然后跑一个二分,答案相加,两端跑暴力(O√n log n +2√n))若加一个数,则在A数组上加那个数,然后在B数组排序就行了
  3. 一个long long范围的数最多被开方六次

 

color[i]:表示下标为i的球的颜色

pre[i]:表示前一个颜色为color[i]的球的下标

pre[i]<x<i,则[x,i]区间内只有一种颜色为color[i]的球

所以只用查询[l,r]里所有pre[i]<li的个数即可

修改颜色的话,只需要暴力维护某个颜色的数组,再造一个类似于链表的东西就可以了

深度优先搜索(dfs

深搜,电风扇,大法师,回溯

是自己欺骗自己的好东西(滑稽)

较多用于走迷宫和树的遍历中(以及大名鼎鼎的网络爬虫)

虽然要利用栈进行递归但是不可思议地空间依旧比广搜小

一般结合强力的剪枝服用时有奇效

由于不需要搜索完所有的节点也能出一些结果,故在骗分界有广泛的好评

在寻找最优解的问题上基本被广搜吊打

(能写循环写循环,因为搜索复杂度过大)

杀人放火,居家常备,解决最优性问题有两把刷子

擅长答案在搜索树比较浅的位置时的情况

虽然名字叫广度优先搜索,但其实并不喜欢很宽的搜索树

状态的表示并没有深搜来的舒服

并没有很好的剪枝策略,垃圾节点一大堆

空间上完全被锤爆了,可以说是一点都没有考虑过内存的想法

双向广搜可以去掉一些垃圾结点(比广搜更优)

迭代加深搜索:

 

下午就变成了数论qwq

高精除法(高精除以高精)

因为计算机无法试除,所以用减法,能减就减

高精度开方

首先将数字按两位两位的分开(小数点为界)

然后是快速幂,矩阵快速幂,高斯消元,筛法

 

 

div是整除

 

猜你喜欢

转载自www.cnblogs.com/gongcheng456/p/11184080.html
今日推荐