7/24训练日记

今天主要是补昨天的b题然后理解了他的两种解法其中一种是莫队算法这种算法是用来处理区间询问和修改的,而且需要离线操作最后再总的输出莫队算法通过把区间分割然后把要询问的区间按顺序放到各部分中然后通过对一个点开始操作不断地拓展区间直到要询问的区间极大的节省了时间。另一种是用了很巧妙的方法很巧妙很巧秒也很难想,它通过一种前缀和来表示每次加的是true和false正好对应有和无。
递归还主要是用于搜索以及一些枚举,他较于递推的话递归需要站的进出以及终止条件不过他们都是到达最底层已知的然后逐层推导未知。
二分,难还是难在区间的把握(即何时退出循环)以及答案的精度整形和实型的二分也都有自己的形式,
整数型的 mid=(l+r)/2,r=mid,l=mid+1;mid=(l+r+1)/2,l=mid,r=mid-1;其实我觉得直接l=mid+1,r=mid-1;就行了(当然还是对情况吧)。实数域上的二分因为端点都是实数这样他们就能无限地接近而不相交这时候可以给定一个区间长度(1e-6)如果小于这个区间长度就break也可以指定循环次数,同样也可以达到。
排序算法,离散化当数据很大且数据量很小并且问题只与数据的相对大小有关就可以通过离散化把他缩小

				void discrete(){//离散化
					sort(a+1,a+1+n);
					for(int i=1;i<=n;i++)
					{
						if(i==1||a[i]!=a[i-1])
							b[++m]=a[i];
					}
				}
			lower_bound(b+1,b+1+m,x)-b;//把x映射为1~m之间的数。

归并排序求逆序对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值