ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CDQ分治(cdq orz

2021-08-03 12:02:24  阅读:221  来源: 互联网

标签:sort orz int 分治 mid merge CDQ cdq


没想到有一天我这样的菜鸡也会学CDQ分治
绝大部分内容来自【洛谷日报#115】CDQ分治和整体二分,如有雷同,不是巧合

  • CDQ分治是一种基于分治思想的离线算法,能吊打在线解法
前置芝士:分治
  • 经典例子:归并排序(逆序对)
  • 众所周知,归并排序是每次将区间[l,r]拆分成[l,mid],[mid+1,r],然后再\(O(n)\)合并两个有序数组,再将[l,r]的答案传到上层,可得时间复杂度为\(O(nlogn)\)
void merge_sort(int l,int r){
	if(l==r)return ;
	int mid=(l+r)>>1;
	merge_sort(l,mid);
	merge_sort(mid+1,r);
	int p=l,q=mid+1,cnt=l;
	while(p<=mid&&q<=r)
		if(t[p]<=t[q])t[cnt++]=a[p++];
		else t[cnt++]=a[q++];
	while(p<=mid)
		t[cnt++]=a[p++];
	while(q<=r)
		t[cnt++]=a[q++];
	for(int i=l;i<=r;i++)a[i]=t[i];
}

标签:sort,orz,int,分治,mid,merge,CDQ,cdq
来源: https://www.cnblogs.com/wuchen-place/p/15093673.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有