7月23日训练总结

1.分形但其实还是递归的思想,递归的用途很多,无论是搜索还是其他的方面,不断调用自身讲一个大问题转化为一个小问题,最后小到可以求解的程度,就是递归。
2.前坠和与差分,一个数组的差分的前缀的差分就是他自己,同样的差分的前缀和也是他自己,前缀和与差分比较适用于静态查询,而线段树更注重于修改,而很多静态查询借助差分与前缀和能够有效的降低时间复杂度。
3.二分法
之前二分会,但是通过这次的学习,明白了二分的四种基本套路:
整数域上的二分:

while(l<r)	{
	mid=(l+r+1)>>2;
	if(Panduan(mid)<=Tiaojian) l=mid;//mid符合条件,则比mid大的可能符合条件
	else r=mid-1;//mid>tiaojian 则比mid 小的可能符合条件; 
}
while(l<r)	{
	mid=(l+r)>>2;
	if(Panduan(mid)>=Tiaojian) r=mid; //因为mid符合条件,且比mid小的暂时都符合条件;
	else l=mid+1;//Panduan[mid]<Tiaojian,因为mid不符合条件,且大于mid 的可能符合条件;
}

实数域上的二分:

	const double 1e-(K+2)比题目要求精度多两位
	while((l+eps)<r){
		double mid=(l+r)/2;
		if(Panduan(mid)<=tiaojian) l=mid; //或参考上文,寻找合适条件; 
		else r=mid; 
	int n;//设置循环次数
	for(int i=0;i<n;i++)
	{
		double mid=(l+r)/2;
		if(Panduan(mid)<=tiaojian) l=mid; //或参考上文,寻找合适条件; 
		else r=mid; 
	}

4.排序算法
除了比较排序之外,还接触桶排序,与基数排序,排序的方式不应该仅限于sort,部分题目自己手写的排序的可能起到更好的作用。
5.中位数
比较经典的问题:货仓选址,均分纸牌,环形均分纸牌。可以转化为中位数。

posted @ 2019-07-24 09:45  风骨散人  阅读(76)  评论(0编辑  收藏  举报