总结与心得(持续更新)

不知道为什么,刚学的算法过了2个月就忘得一干二净,我并没有背代码啊,当时学的时候还刷了好多题来着→_→,我是不是大脑能力严重衰退了。


动态规划

单调队列

  一般情况下,${dp}$方程可以搞成这样:${f_i=f_j+t_j+t_i}$,只要其中没有变量同时与${i,j}$都有关,那么我们可以用单调队列来做,单调队列里面元素的关键字就是与${j}$有关的东西${f_j+t_j}$。example:生产产品

  有些比较特殊的,虽然存在同时与${i,j}$相关的函数,但是这个函数比较简单,使得已经存在在单调队列中元素的相对位置不会因此改变,这样的话我们可以打一个全局标记来处理。example:瑰丽的华尔兹

  还有一些比较奇葩的,这已经不属于单调队列优化dp的范畴了。example:cut the sequence

斜率优化

  想当年我还写过学习笔记,现在毛都不记得了T_T,斜率优化学习笔记。反正套路都差不多,不过我还是更喜欢从函数的角度去理解斜率优化。

  斜率单调。example:特别行动队

  斜率不单调。example:购票

  横坐标不单调。example:货币兑换

状压dp

  插头。插头还是挺简单的,就是一个板子,随着题目的变化稍微修改一下就好。example:Tony‘s Tour

  容斥套着,到了考场也不知道会不会做 ╮(╯_╰)╭。example:局部极小值

数位dp

  写成记忆化搜索的形式会好很多,注意该开LL的时候开LL。example:Balanced Number


prufer

  prufer序列中每个数出现的次数就是它在树中的度数-1。example:明明的烦恼

  经常用来做树的计数一类dp。

树分治

  点分治。关键是对答案的统计用什么算法和数据结构进行处理。example:Tree

  有的时候,一定要小心的就是扫把型的树,如果不对子树进行排序,很容易就会被卡掉。example:重建计划

  动态树分治。没什么好说的,也许我没做过什么题。example:开店

  树上CDQ。example:购票

树链剖分  

  树链剖分的性质(一个点到根节点的路径上的轻变不超过$log$条)可能有些奇技淫巧。

  最简单的维护树上路径修改查询。example:软件包管理器

  dsu on tree。其实就是树链剖分维护启发式合并,在某些情况下特别好写= =。example:天天爱跑步

  长链剖分维护合并跟深度有关的信息。复杂度证明:每次合并的次数是这个节点连出的轻边的点所在的重链的大小,那么每条重链最多只会被记录一次,所以总合并次数是$O(n)$。听说还能$O(n)$求lca。example:坑着

虚树

  虚树就是只含有查询点以及它们lca的点的树,往往与树形dp一同食用。虚树的题目往往其询问点的总数不会超过某个值,必须要满足在虚树上dp可以降低复杂度。教程?

  example:世界树

Link Cut Tree

  link的实质是找到父亲,cut时换根是为了搞清楚两点之间的父子关系。带边权的换成点。example:魔法森林

  LCT维护可加减子树信息,如果不是可加减的就只能toptree了。注意在轻重边替换的时候同时更新信息。example:共价大爷游长沙

  ntr的妙用= =。example:CC某题

  一类问题的通用解法,分类维护前缀信息和后缀信息。example:城市旅行


数据结构

KDtree

  能不写最好还是不要写吧,轻松被卡→_→,也许可以出奇制胜?如果要写,重新构树是个不错的选择。发现大数据跑不过,多半是剪枝挂了。

  平面上最近(最远)点对。example:SJY摆棋子

  范围内点权查询,暴力重构。example:简单题

  神应用,怒艹一类数据结构题。example:A simple rmq problem

Splay

  扣区间$[l,r]$的时候,把$l+1$Splay到根,$r+1$Splay到根的右儿子,然而加了“哨兵”,实际上是$l$和$r$。

  rotate和Splay记得要加取地址符。

  对区间操作完后记得pushup父亲和根,pushup的时候size记得+1啊啊啊。

  example:维护数列

ST表

  好像没什么好说的,一些细节想清楚就好了= =。example:超级钢琴

treap

  比Splay好写一些树套树方便一些可以持久化。思想还是蛮简单的,随机一个权值保证logn的期望树高。

  非旋转版现在还策不清,如果真的考了可持久化treap那我还是早早弃疗吧=  =。example:普通平衡树

分块

  通常用来优化暴力。

  树上分块。example:王室联邦

  权值分块。example:dispatching

  优化暴力。example:最小公倍数

  数据有一些特色的,可以分两类:$ > \sqrt{n}$和$ < \sqrt{n}$,分别处理与复杂度分析,然后基本不等式搞一搞取最优块大小。好像没有什么好的例子。。example:普通计算姬

可并堆

  好写好调好理解,代码简短。example:disoatching

链表

  双向链表大法好。example:营业额统计

启发式合并

  把size小的往size大的里面丢,合并次数$logn$。example:森林

  貌似写过的启发式合并都是直接set了=。=

树套树

  二维线段树。example:魔幻棋盘

  线段树套treap。example:二逼平衡树

树状数组

  区间修改。example:poj某题

线段树

  呵呵,线段树上各种耍杂技=  =。

  维护连通性。example:堵塞的交通

  扫描线结合。example:Picture

  二维线段树。单点修改矩形查询,example:魔幻棋盘;矩形修改单点查询;可以直接标记可持久化,example:树状数组

  蜜汁思路。example:基础数据结构练习题

  线段树合并。example:CF 666E

  超哥线段树。example:robot

  区间取最值操作。example:hdu某题

  历史最值查询。example:CPU监控

  还有个劲(j)爆(b)玩意儿现在都还不懂。example:CF某题

主席树

  ntr的妙用=  =。example:CC某题

  优化网络流连边。example:a+b problem

  可持久化数组。example:可持久化并查集

  树状数组套主席树。其实是树状数组套权值线段树=  =。


数学

BSGS

  用来求解$a^x=b~(mod~p)$,所谓大步小步。可能出现无解的情况。example:板子题

多项式乘法

  注意数组大小,以及最后除一个$n$。循环卷积注意细节变动。转成整型的时候不要爆了int。板子一套:多项式乘法

  求解字符串匹配问题。example:万径人踪灭

  预处理$ω$加强精度,任意模数FFT,倍增优化dp。所谓倍增优化,就是$f_i$可以由$f_x$和$f_y$推过来($x+y=i$)。example:CF某题

  离散对数NTT,循环卷积,求解原根,倍增优化dp。

  所谓循环卷积,就是在DFT回来统计答案的时候,除了加上对应位置$x$上的卷积结果,还要再加上$x+m-1$位置上的卷积结果。example:序列统计

博弈论

  当前局面的SG等于后继状态的SG的$mex$,当前游戏的SG等于各个子游戏的SG状态的$xor$。大都是脑洞题,考场上只能看人品了。。

  求解SG函数。example:江南乐

  暴力求解SG,找规律。example:S-NIM

高斯消元

  模意义高斯消元,其实就是除的时候乘个逆元。example:SETI

  线性基相关。example:XOR

  线性基性质。线性基中每一个可以被异或出来的元素的异或方案数相同(包括0)。example:albus就是要第一个出场

  动态构造线性基。example:元素

数学相关dp和组合计数

  多推推式子转化一下问题,从不可做变成可做。组合数公式的话大概用格点法推一推?$\displaystyle \binum{n}{m}$表示从$(0,0)$走到$(n-m,m)$的方案。

  dp期望或者dp概率通过概率算期望。example:亚瑟王

  精度要求不高的,可以估算一下计算的次数。example:CF坦克大战

  异或相关dp的正确AC姿势,虽然没有什么普适性。example:Lights

  二进制相关dp的正确AC姿势。一般先考虑排列方案最后再除个阶乘会好很多。转移的时候考虑到相等的情况,需要容斥一发。example:facer‘s chocolate dream

莫比乌斯反演

  $mu[i]$,如果i的某个质因子指数大于$1$,$mu[i]=0$;否则,$mu[i]=(-1)^{i的质因子个数}$

  推式子的时候一定要小心,把一些东西提前的时候不要忘记乘或者除了个什么东西。

  $\lfloor n/i \rfloor$,取值相同的$i$的范围为$[i,n/(\lfloor n/i \rfloor)]$。

  用来容斥,很棒棒哦。example:完全平方数

  约数个数有一个比较经典的式子。example:约数个数和

  线性筛约数和。离线处理约束条件。example:数表

欧拉函数

  在线求欧拉函数。example:Longge的问题

  一个公式。example:Robot

  当$n>2$,$φ(n)$是偶数。example:上帝与集合的正确使用方法

置换

  Burnside:对于一个置换$f$,若存在一个着色方案$s$经过置换后不变,称$s$为$f$的不动点,等价类数目为所有置换的不动点的平均值。example:Cards

  Polya:假设可以有$k$种颜色,那么一个置换$f$的循环内的元素的颜色必须相同,等价类的数目为所有置换的$k^{循环个数}$的平均值。example:Let it bead

  一个是对染色方案考虑,另一个是直接对置换考虑。

数论大合集

  费马小定理优化矩阵乘法。example:矩阵游戏

  Lucas,费马小定理,中国剩余定理。example:古代猪文

  Lucas用的时候要注意特判$m=0$,同时组合数记得特判$n<m$。模数不是质数的Lucas,就用古代猪文中的方法,分解质因数然后CRT合并。

  exgcd和CRT最好还是用LL运算,不然怎么挂的都不知道=。=

  暴力容斥。example:跳蚤


字符串

AC自动机

  没啥好说的。。。板子题:阿狸的打字机

HASH

  也没啥好说的。。板子题:火星人

KMP

  还是没啥好说的。。可能会有奇技淫巧吧。板子题:动物园

manacher

  我已经不记得了。板子题:不知名

trie

  异或贪心相关。example:poj某题

  trie树合并,跟线段树合并差不多。example:Alice和Bob又在玩游戏

后缀数组

  基本的论文二分答案+按照height分组的思想。example:milk patterns

  单调栈。example:CS

  后缀自动机求后缀树组。example:板子题

  双向链表。example:生成魔咒

  分割点。example:mrs

后缀自动机

  


思想

CDQ分治

  看起来很强但是很simple的一个玩意儿。

  CDQ图分治。example:城市建设

  CDQ上树+维护斜率优化dp。example:购票(这题出现频率真高=  =)

  一道还不错的题。example:共点圆

  四维偏序。example:偏序

倍增

  没啥好说的,注意边界细节。

  神题一道。example:会议中心

  倍增优化dp,类似快速幂。example:序列统计

莫队算法

  莫队还是挺灵活的,各种升级版本都有=  =。

  树上莫队。example:糖果公园

  在线莫队。其实就是预处理出来n个询问,然后每次读入的询问暴力移左右端点。example:坑

  江队。只有插入或者删除的莫队。example:坑

  总之在考场上应该也能YY出来吧,一定要注意常数啊,一个小小的细节可能就葬送AC=。=

平面图与对偶图

  优化网络流。example:海拔

  抠域和点定位。example:平面图(话说看这毒瘤题真的大丈夫?=  =)

整体二分

  没啥好说的。example:接水果


小技巧

  差分求解区间gcd。example:魔幻棋盘

  当答案是这种$ans=a/b$的形式,二分答案是个不错的选择。example:最小圈

  二分$delta$。example:tree

  两个熏肉贪心题。哈夫曼;example:荷马史诗。田忌赛马;example:泡泡堂BNB

  图的hash(话说这真的叫hash吗,反正王队长这么说那我就跟风了=。=)。example:DZY loves Chinese

  弦图。话说这玩意儿真的会考吗。example:神奇的国度

  $O(1)$黑科技double快速乘。如果没记住还是龟速乘吧,写错一点都会GG。example:随机数生成器

时间: 2024-10-12 14:28:42

总结与心得(持续更新)的相关文章

软件测试知识点汇总目录(持续更新)

个人在工作之余通过word文档长期持续更新工作中需要涉及到的一些理论和技术知识.所谓好记记性,不如乱笔头.根据工作年限和职位的变化,以及就职公司参与的产品或者项目所涉及到的测试方面的技能不一样,会存在有些之前的技能不经常使用,会导致生疏的现象.虽然不至于归零,但是一旦需要使用的时候,有一个相对比较完整规范的文档来应急阅读来回顾其使用等是很有帮助的.比在网上搜索出来的相关零散的不完整的知识点方便的多. 文档创建年限不是很长,有很多知识项没有写入文档或者还没有来得及编写,需要在后续持续更新.文档编写

功能使用来源(持续更新)

从开始编写项目到现在,用过好多插件,但是有的时候用过后,时间一长就会忘记,这里我整理一下,以防忘记,我会持续更新的!!! 图表类: Jfreechart 适合java和jsp使用 界面差,不易维护,说白了,显示的就是一张图片: highcharts web使用,js插件,界面绚丽,官网有好多demo(当时没有找到这个,于是用的jfreechart...): echarts 近期找到的,百度制作,叫百度图说,我很看好这个,下次如有需要制作图表的时候,我一定用这个!!!这个也有好多的demo,我看了

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.

2017年上半年软考报名时间汇总(持续更新)

全国2017年上半年软考报名时间汇总(持续更新) 关注报名时间:各省报名开始时间.结束时间不一. 关注报考科目:部分科目一年只考核一次. 关注考试时间:上半年时间为5月20日,及时开始应试准备. 最新 | 2017年上半年软考考试时间和主要考试科目 序号 地区 开始时间 结束时间 1 湖北 1月23日 4月15日 2 海南 2月13日 3月13日 3 四川 2月15日 3月15日 4 青海 2月27日 3月12日 5 浙江 3月1日 4月10日 6 山东 3月14日 3月23日 7 湖南 3月2

转-推荐的几个开发常用在线工具,可以提升开发效率(持续更新)

http://blog.csdn.net/kroclin/article/details/40634975 相信开发中每个人手头上面都有那么几个工具可以让你每天洋洋得意的开发软件,而这里我就将我觉得还挺不错的几款在线工具分享出来,仁者见仁啦,喜欢就拿走.还会持续更新,以后有新的我都贴上来. 1.MD5解密:http://www.cmd5.com/ 2.MD5加密:http://md5jiami.51240.com/ 3.json在线解析工具:http://json.parser.online.f

iOS开发系列文章(持续更新……)

iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大家交流,新建一个iOS技术交流群,欢迎大家加入:64555322 C语言 IOS开发系列--C语言之基础知识 IOS开发系列--C语言之数组和字符串 IOS开发系列--C语言之指针 IOS开发系列--C语言之预处理 IOS开发系列--C语言之存储方式和作用域 IOS开发系列--C语言之构造类型 Ob

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com

Linux系统各发行版镜像下载(持续更新)

Linux系统各发行版镜像下载(持续更新) http://www.linuxidc.com/Linux/2007-09/7399.htm Linux系统各发行版镜像下载(2014年10月更新),如果直接下载不了,请使用迅雷下载.并且注意,我的下载地址,在  迅雷 里才起作用. 包括Ubuntu,Fedora,SUSE,Red Hat Enterprise Linux,CentOS等. 中国大陆开源镜像站汇总 1.企业贡献: 搜狐开源镜像站:http://mirrors.sohu.com/网易开源

MongoDB学习——持续更新

參考MongoDB权威指南,学习阶段.大家多多交流问题.持续更新本文 MongoDB的长处 MongoDB具有丰富的数据模型,是面向文档的数据库. easy扩展.能够在多台server之间切割数据. 开发人员仅仅需专注于编写应用.假设须要更大的数据.仅仅需在集群中加入新机器,然后让数据库来处理剩下的事情. 具有丰富的功能,比方索引,存储JavaScript,聚合,固定集合.文件存储. 不支持联接(join)和复杂的多行事物. 卓越的性能是MongoDB的主要目标,默认的存储引擎使用了内存映射文件

C#、Java中的一些小功能点总结(持续更新......)

前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGridView表头的排序功能 1 /// <summary> 2 /// 禁止点击列表头进行排序 3 /// </summary> 4 /// <param name="dgv">当前DataGridView控件</param> 5 private