![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技巧总结
文章平均质量分 83
P_Pqueen
这个作者很懒,什么都没留下…
展开
-
【技巧总结】——数据结构
数据结构树状数组求逆序对求顺序二维数点问题笛卡尔树优先队列排序可后悔的贪心并查集`模型转换`树状数组求逆序对用树状数组来记录a[i]a[i]a[i]出现了几次,然后没次根据不同需要,选择循环顺序以及askaskask求什么,最后把a[i]a[i]a[i]出现的次数+1前面的数:正序循环后面的数:倒序循环比当前这个数小/大:ask(a[i]-1)/ask(maxx)-ask(a[i])经典例题: 楼兰图腾求顺序大意是告诉你前面有几个人,问你他是第几个假如一共有n个人,他前面有k个人,那么原创 2021-11-12 21:06:56 · 447 阅读 · 0 评论 -
【技巧总结】——数学知识
数学知识网格图k点共线(n*m)高精线性求逆元卡特兰数(设为h(n))公式矩阵乘法加速起飞模型思想高斯消元(n3n^3n3)基础异或类问题线性基找异或最值期望dp网格图k点共线(n*m)水平共线:Cm+1k×(n+1)C^k_{m+1}\times(n+1)Cm+1k×(n+1)竖直共线:Cn+1k×(m+1)C^k_{n+1}\times(m+1)Cn+1k×(m+1)倾斜共线(因为左右对称,所以只计算一边,然后结果乘2 即可)利用相似三角形的性质可知:设一个格点直角三角形两边长为a,ba原创 2021-11-12 21:08:59 · 920 阅读 · 0 评论 -
【技巧总结】——图论
图论树一棵树的拓扑序个数拓扑逆向思维差分约束基础式子寻找隐藏关系图的连通性bool型的tarjanbool型的tarjanbool型的tarjan有向图的必经边和必经点最短路计数`模型转换`次短路基环树找环树一棵树的拓扑序个数以每个点为根(换根dp),那一棵树的拓扑序个数是:n!/(siz[1]∗siz[2]∗...∗siz[n])n!/(siz[1]*siz[2]*...*siz[n])n!/(siz[1]∗siz[2]∗...∗siz[n])(这里的sizsizsiz是针对不同的根有的会不同)原创 2021-11-12 21:10:52 · 962 阅读 · 0 评论 -
【技巧总结】——STL
STLmapmapmapset与multisetset与multisetset与multisetmapmapmapmap的应用十分广泛,但是缺点就是复杂度太高,是logn的,所以在使用的时候一定要计算复杂度。另外,如果用了结构体当下表,那么一定要重载运算符!!想标记一个整体的时候就可以用经典例题:碰撞检测set与multisetset与multisetset与multiset区分:前者去重,后者不去重,都是按从小到大排序的这玩意可以直接lower_boundlower\_boundlowe原创 2021-11-12 21:12:46 · 900 阅读 · 0 评论 -
【技巧总结】——位运算
位运算异或转换对象异或这个运算简直可以封神了,一个数^它本身就是0,这个性质可以做N种题,这也可以说是异或最重要的性质了转换对象当与异或操作有关时,找一个数也许不方便,但是二进制位数就那么多,可以先异或一下,把所有可能出现的结果存起来,然后去看看有没有这个数之类的操作(一般与hash结合)这也是利用上述异或的重要性质经典例题:异或 (把所有可能出现的b存起来,然后再根据输入去找是否存在)谜题(要找的是最终异或=1111……的结果,然后因为数据有40,dfs会炸,所以分两步走,先找前一半,然后原创 2021-11-12 21:13:55 · 232 阅读 · 0 评论 -
【技巧总结】——二分
二分求解性→可行性二分求lis求解性→可行性这个思想非常重要,二分学好了确实可以和很多别的算法巧妙结合。主要步骤就是二分答案,接着判断能否实现经典例题:魔法(二分+dp)TelephoneLinesTelephone LinesTelephoneLines(二分+最短路)本题又延伸出来一个新的知识点:判断的时候,可以选取适当的参考,用0,1,-1代替原数(毕竟不考虑求值),这样就可以用最后求出来的结果O(1)O(1)O(1)判断是否合法了例:coexitcoexitcoexitMilkVi原创 2021-11-15 15:17:35 · 421 阅读 · 0 评论 -
【技巧总结】——字符串
字符串hashhashhash解决冲突的方法二维hashhashhash回文串判断KMPKMPKMP最小循环节最小表示法限制类DPAC自动机(多串匹配)DPhashhashhash解决冲突的方法vectorvectorvector数组存储经典例题:集合的关系线性探测法(其实就是有冲突了就往后放)这里注意一定要把模数开大一点,不然处处碰壁经典例题:随机的点异或二维hashhashhash也不知道是啥原理,公式比普通的字符串hashhashhash长了不止一倍,麻了经典例题:Matr原创 2021-11-16 19:09:21 · 647 阅读 · 0 评论 -
【技巧总结】——DP
DP那些奇奇怪怪的dpLIS二分法(nlogn)求输出方案区间dp(n3n^3n3)线性dp破环成链递归型转换对象背包普通背包“体积”,“价值”,“数量”降维整体二进制矩阵乘法优化那些奇奇怪怪的dp糖果(题目中问的是能放糖果的方案数,但是我们反着来,考虑只有空盘子才能进行转移,思维比较绕)LIS二分法(nlogn)求具体参见上面二分板块输出方案额外设置一个cnt[i]cnt[i]cnt[i]数组,表示,以iii结尾的递增/递减/不上升/不下降子序列的个数这里以递减为例:当f[i]==1f原创 2021-11-16 19:10:05 · 639 阅读 · 0 评论 -
【技巧总结】——骗分
骗分(很重要啊喂)可能的优化相信自己可能的优化图论连边的时候看一看是不是能省掉没用的边!这个优化很有用的循环里面把所有可能想到一定无解的情况都break掉,直接砍掉一堆复杂度,非常强力(不要看着循环多,但是加了剪枝还是可以过滴)相信自己暴力如果只写了一档分,请千万不要写分段(不要怕评测机坏掉哦【滑稽】),要相信自己的运气,以及水水的数据当自己觉得自己写错了的时候,必须拿出数据来hack掉自己,不然,贪心就是对的!!...原创 2021-11-16 19:11:15 · 440 阅读 · 0 评论 -
【技巧总结】——关于不知道放到哪里的小技巧
【技巧总结】——关于不知道放到哪里的小技巧折半搜索折半搜索当看到n非常小的时候,一般是(25~40),想暴力但是会T,这时候就可以想一想是否需要折半搜索主要步骤有2个:1.搜前一半,存答案2.搜后一半,得到的结果和前一半去匹配一般来说搜索只需要最普通的dfs即可,而存答案多和stl有关经典例题:Light switchesLight\; switchesLightswitches(如果对半分容易T,那么预处理的时候多处理一点,处理20个,剩下在询问的时候处理即可)Xor−PathsXor原创 2022-01-28 07:44:36 · 362 阅读 · 0 评论