很妙的思维模型整理

Posted goto_1600

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了很妙的思维模型整理相关的知识,希望对你有一定的参考价值。

2021.11.15
https://ac.nowcoder.com/acm/contest/17797/K
两种操作 op1 加一层val的线段l到r op2询问包含在区间[l,r]的所有线段的最大差值
要求强制在线,m=1e5 n=3000
很秒的操作就是转为二维平面前缀max和min,把l,r分别作为x和y轴,我们每次查询希望是个前缀,也就是包含在[l,r]平面内的点都能有贡献,但是有个不好的地方就是l是递减的,刚好跟坐标轴是反着来,我们可以对称一下用N-l来add点,然后正常查询用二维bit就行了,二维bit可以用来查询二维平面从(0,0)开始的前缀max/min/和。

树上启发式合并
复杂度nlogn,南昌K,树上启发式合并套动态开点权值线段树。⚠️树上启发式合并要dfs两次,第一次类似树链剖分,找出重儿子,然后先遍历轻儿子,把轻儿子自己的贡献算上,清空轻儿子然后dfs重儿子,保留重儿子信息,然后加上轻儿子的贡献,如果flag==0把这个子树的贡献暴力删除。动态开点权值线段树,一般用来处理值域很大或者,有二维的问题(也就是有不同个root版本的)特别好用。

2021.11.16

切比雪夫距离 和 曼哈顿距离互相转化 洛谷松鼠的聚会,给定1e5个点求选定一个点,所有点到该点的切比雪夫距离和最小。
对于(x1,y1) (x2,y2)切比雪夫距离=max(x1-x2,y1-y2),曼哈顿距离=abs(x1-x2)+abs(y1-y2),对于切比雪夫距离上的所有点=((x+y)/2,(x-y)/2) 对于曼哈顿距离的所有点距离为((x+y),(x-y)),比如该题我们转化成曼哈顿距离直接秒杀。把x和y分别处理,排序维护就可以。
很好的博客

sosdp 处理子集问题的


sosdp技巧,复杂度 O ( n l o g n ) O(nlogn) O(nlogn)先枚举位数,再枚举状态,如果遇到要求补集的子集和,不好做的话,我们不如把0和1反一下,1代表不选,0代表选,用1来转移,能达到一样的效果。

N代表位数
for(int i=0;i<N;i++)

	for(int j=0;j<(1<<N);j++)
	
		
		//子集操作
		if(j>>i&1)	continue;
		dp[j]=dp[j^(1<<i)]..
		//超集操作
		if(!(j>>i&1))	continue;
		dp[j]=dp[j^(1<<i)]..
	

update:
线段树合并是个很神奇的算法,但是合并完一定要立马统计信息,不然会错误!!比如雨天的尾巴。

查询一个节点跟他有一样的k级父亲,可以反向考虑,把信息存到他的父亲上,父亲可以用倍增求,然后树上启发式合并的时候考虑父亲就可以了!如果正着做确实比较难考虑呀qwq。
2021 11 17 紫题100ac

https://www.luogu.com.cn/problem/CF1401F
在寄网课上学了线段树反转整体区间和交换区间,太牛了,flag直接定义在层数上,否则会TLE,也不用pushdown,之前不知道交换怎么维护,如果用rev维护那么pushdown就会错,但其实不pushdown就行了,还是太死板了。

我超
寄网实验课看到了一个线段树区间修改和sin求和,不知道咋弄,回顾一下高数 s i n ( a + b ) = s i n ( a ) ∗ c o s ( b ) + s i n ( b ) ∗ c o s ( a ) c o s ( a + b ) = c o s ( a ) c o s ( b ) − s i n ( a ) s i n ( b ) sin(a+b)=sin(a)*cos(b)+sin(b)*cos(a)\\\\cos(a+b)=cos(a)cos(b)-sin(a)sin(b) sin(a+b)=sin(a)cos(b)+sin(b)cos(a)cos(a+b)=cos(a)cos(b)sin(a)sin(b)
然后线段树维护区间sin和cos和lz,让我没想到的是lazy是可以叠加的,还是太呆了。

update: 2021.11.18
复习了一下点分治和cdq,cdq三维偏序,先保证时间,然后
x和y,考虑该层(l,mid)对(mid+1,r)这一部分的影响,通常用双指针和树状数组来维护修改。
点分治是每次换根的体现,维护子树之间的信息,只要找到个所有节点<=当前子树的sz/2就行了,可以保证最多递归nlogn层,然后每层计算就可以了。

以上是关于很妙的思维模型整理的主要内容,如果未能解决你的问题,请参考以下文章

刷题总结——(一道很妙的题)Resistance(ssoj 欧几里得 )

暑假集训8.7数据结构专题-很妙的线段树( 觉醒力量(hidpower))

[SCOI2008]配对 (贪心,动态规划)

BZOJ 4407 于神之怒加强版

tarjan 拓扑排序 dpbzoj1093: [ZJOI2007]最大半连通子图

博弈论?不存在的