一些技巧

最重要的是思维方式,真的!

对我来说,一旦一条思路5分钟内出不来结果那么就是废了

所以之前一直在一个尽头浪费时间,现在要学会往回走了!!

随机数的运用

1、对于异或的规范,如果我们要求一些东西必须在一起,那么我们可以赋随机权值使得这些东西异或和为0

2、判断是否合法的东西,如果要加法,但是只能实现减法,我们可以赋随机权值,比如行列式和积和式

染色法

1、区分两种情况,如果不太好统计的话,我们可以每次染一种新颜色!

2、也可以区间加值

计数

1、当限制太多的时候,容斥是最好的选择

2、关于图的容斥,第一种是容斥联通图,枚举第一个点所在的连通块;第二种是枚举连通块容斥,比如有时候钦定边集

3、有关于组合数,如果可以找到组合意义将其转换,那么可以一试

4、转化题意,可以提出一些无关项使得题目进一步简化,列式子很重要!!

生成函数

1、OGF是组合,EGF是排列

2、fwt的每一位的变换可以以任意顺序进行,所以可以对一个东西进行复合fwt,也就是每一位可以或与异或,fwt时判断当前位是啥就行,最外层枚举的是变换的数位,判断一下当前位是啥变换(7.18T2)

dp

1、当转移是两维并且转移没有顺序的时候,可以尝试在脱离顺序时交换两维

2、若dp值在实数域上,可以根据dp的点来离散化,比如根据大小关系

3、dp定义的设计可以是目前还剩下几个分散的段,每次链接两个段或者独立成一段....

4、一个有关将一个数划分成几个互不相同的数的方案的dp,发现划分成的数的数量是根号n级别的,有两种dp方式,第一种比较传统,每次添加一个1或者全局+1,但是这个必须要记录两维比较有局限性;第二种的话,我们可以尝试将上一个dp优化一下,上一个相当于是从1加到\(\sqrt{n}\),每个数不限制加多少个,如果加过i,那么必须加i-1,这个是为了保证没有重复的数,要保证这个东西,最好是从\(\sqrt{n}\)加到1,这样每次先强制加,然后做完全背包就行了,复杂度降为\(n\sqrt{n}\)

5、直接dp有的时候不好写,可以尝试差分序列、映射序列等等

6、矩阵优化,有的时候不好看出来,可以多设几个变量

7、有时候可以给dp状态的维度之间的关系,可以有一些优化

8、将一些必要的贪心策略融入dp中可以得到很好的转移方程

9、不要总是尝试一点一点加贡献,可以先把所有的贡献加进去,在一点一点除掉不该有的贡献!!

概率期望

1、期望拆,拆开就是对的

SAM和后缀树

1、反串建SAM就是后缀树

2、SAM上可以写搜索找第K大,后缀树上可以给边排序找第K大(这个需要先按照长度排序)

3、一般找子串对应节点都是找前缀的结尾节点然后倍增

bitset

1、可以用来匹配字符串!!用26个bitset与来与去

分治

1、发现之前就没有会过这个东西,一些复杂的东西如果可以拆成两个部分的话,分治是个不错的选择

圆方树

1、就那么一个套路吧,分圆点方点转移,其实还是挺套路的

最短路

不要写spafa,会死人的!!!

欧拉回路

其实许多东西连在一起似乎就是这个诶

决策单调性

1、分治比较好写,也可以用CDQ分治

2、一般用四边形不等式推式子,注意这个东西并不单调的

数位

1、异或有两种做法,trie树和线性基

2、不要尝试转化成可以维护的形式了,一般都是有规律的

其他

1、做题时可以尽量用数学语言描述我的答案,这样优化起来更加容易

2、尽量分类讨论,这样的做法可以极大的启发思路;可以先考虑问题的一部分,然后拼接起来

3、猜结论非常的重要,猜完去构造或者证明,一般都是对的!

4、降低复杂度是可以尝试将复杂度转移到较小的变量上

5、观察性质观察性质观察性质!!!

6、线段树的应用不只是数据结构,有的时候可以用线段树的区间的性质解决一些问题!!

7、序列问题的暴力可以使用珂朵莉树,set有时候非常好用

8、支配对的思想很重要,比如说求最大值和次大值,按照包含最大值和不包含最大值分类,这样就容易许多!

9、判定问题可以用折半再更新的方式优化复杂度!

10、可以尝试归约问题,就是用一些比较规范的结构来解决非常杂乱的问题,可以使用一些现成的数据结构,线段树,点分树,树剖,生成树,

11、需要历史版本的不一定是可持久化数据结构,可以离线的话就建立版本之间的关系,然后就可以不用可持久了...

12、计算贡献的时候可以拆开算每一个点的贡献,比如区间和的问题...

13、线段树维护序列的问题:扫描线,还是原来的话,尽量写成形式化语言,写成几个条件的满足形式

14、减少对无用信息的无用计算哦

15、平衡复杂度,根号分治是一种办法,小于根号的可以平方,还有另外一种:分别计算子集信息或者补集信息,这样复杂度可以降低一半,在指数级做法中尤为重要!

16、可以应用调整法来求答案,找到调整一次之后的答案变化就行!

17、确定答案,可以不择手段,可利用二进制数来逐位确定,每一位可以看出现次数,就是大概这个意思,可以不直接求,我可以通过不同操作的不同结果来确定答案

posted @ 2022-08-16 17:32  fengwu2005  阅读(170)  评论(1编辑  收藏  举报