标签:打表 lin gcd 网络 节点 树节点 去掉 状态 lru
乱搞:有空可以百度一下
强制根号分类法
强制根号分块法
随机选大点推广法
乱不正常贪心法
http://www.cnblogs.com/onioncyc/p/7909657.html
树状数组倍增,直接加对应c[]
从小到大加不影响LIS
http://www.cnblogs.com/onioncyc/p/7967609.html
入栈+1出栈-1,点到根的路径是前缀和。
子树移动就是区间移动。
在up处更新父亲,分裂合并时的父亲额外更新。
已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。已知编号查排名,统计左子树和左父亲。
http://www.cnblogs.com/onioncyc/p/8092757.html
利用数组的单调性,转移方程就很好看。
max操作转二分覆盖,二分就很好解决了233直接查数字排名。
http://www.cnblogs.com/zsnuo/p/8400720.html
http://www.cnblogs.com/xiao-ju-ruo-xjr/p/8441026.html#3908671
THUWC2018 D2T1
倒着操作,证明一些性质和单调性,然后用平衡树维护。
有空再回来看
http://www.cnblogs.com/onioncyc/p/7640937.html
枚举2^b-1得到公因数包含某个数的子集个数
然后自带容斥即可得到gcd为某个数的子集个数
所有数与n的gcd之和是可以卷积出来的呀(φ*id)。
有种套路要预处理所有素数,这样所有不完全积性函数都可以线性计算出来。
本来要枚举所有因子,通过证明积性函数后可以只枚举素数p^k,降成O(√N)
约数个数也不是很多,通过枚举素数可以快速得到,通过√n会慢一点。
1~10^5有128个约数,1~10^7有448个约数。
BZOJ2957楼房重建
合并区间时,要根据左区间的值在右区间二分得到答案,开一个独立过程calc计算。
复杂度O(n log2n)。
https://www.lydsy.com/JudgeOnline/showsource.php?id=2725632
单调性均摊O(1)。
设出状态,考虑转移就行了。(区间状态)
考虑一个区间内,所有复杂的情况本质上只是两种转移。(那时候的我好自信啊,一点一点调出来这么复杂的题目)
有些东西,想起来很复杂,是真的可以解决(转移)的,不需要特别换方向。
打表确定决策单调性。
待决策部分区间加,然后区间取max得到决策。
证明和重心一样,不符合会移动。
整体标记
接下来最快速度过吧,没那么多时间浪费了,要懂得取舍。
莫名其妙好像十分正确的贪心,选父亲,哦是因为这样不亏……
放缩法:这样做得到的方案虽然不一定满足题意,但最优解一定在方案中,且不满足题意的方案一定不会比最优解小。
1 2 3 4 5 6 7 8 9 10
- - - - - - -
1 2 4 10-8+1
虚树:结构题里存原图和LCA的预处理(这样换成链剖也很方便快捷,注意空间)
DP和建树放在外面,每次将所有点按dfs序排序,相邻点加入lca后去重,然后用栈维护连边。
虚树构造也只能依赖于点数操作,否则复杂度不对。
01数组操作——考虑bitset优化
转化后的矩阵和数字是一样的。
让状态服务于你的转移
一步一步来,一个细节一个细节处理,每一步的成果都有条理的记录下来,想清楚再进下一步,不要乱七八糟的这样写不动。你以为乱七八糟大概知道了就能过样例?想得美。
把东西对状态预处理好,调用。
hash值可以存起来,然后用区间数据结构修改,左区间调到高位去……
不要很表面的想矛盾点,你既然采用了这种操作了,就从这个本质去想了,合并了已经。
先选全部正的,考虑删除,这样的话正权负权都表示为正代价了。
倒过来排序
将一些字符串(数字)贴在trie上,会呈现出每一位相关的明显规律
充电会互相影响……那就改为充不上电吧,分成儿子和父亲各自讨论
PAM中,每个点被访问的次数是它作为其右端点最长回文串的次数,这是要将所有fail树的儿子(包含它的回文串)加上就是出现次数了。
每个点会fail到同右端点更短的回文串嘛,那么所有回文串x就在节点x统计之外,有可能其右端点x不是最长的,那就是所有能fail到它的,加上就好了。
回文树的核心思想是【固定右端点】(而非中心),fail到最大的同右端点回文串。
线段树优化建图
向编号小的权值在一定范围的点连边,就建主席树,每次link之后再新加一条链,这样每次link的就是前缀和(不支持区间的,用主席树是为了前缀link,我们是直接link树节点的)
每个父亲向儿子连边,叶子向点连边,新建的链的叶子向依赖链的叶子连边就行了。
大概这种没点对应一个区间然后选择的问题……要不找方向固定贪心,要么就是网络流啦!
子树DFS序!
树形DP:孩子和父边!
分治任务很重要哦!
重边:防访问父亲if(i^1!=fa)针对边。
自环:初始不添加。
连边减连通块的思想。
容斥就是每个方案有一个01排列,按照1的数量划分成n的系数,那么要求每个1的数量的计算结果恰好为要求的那个系数,即ΣC(n,i)*coef(i)=a[n]。
LRU 枚举最后一个的那啥就行
最后一个到达目标状态就不从自身转移了
提到前面,改变枚举是常用套路。
分成两个分块取值优化,对这东西敏感,因为只和n/d有关。
前缀和是倒三角?乘两倍减中线就是了啊。
枚举gcd。
找卷积对象?相同完全积性函数卷积有奇效啊。
改变枚举对象有奇效——变成枚举倍数或枚举后面的数字。
可以把最前面的Σ去掉变成前缀和,也可以不去掉,可能都能写而且不同写法。
SAM
1.节点是Right集合相同的子串集合
2.每个从根到节点的路径上的字符构成的子串属于这个节点,不过不一定是最长子串,所以前面可能延伸。
3.虚边:后缀子串,fail。
到np的父亲集合。
分块套分块
Parent树的变化只是子树替换。
预处理贡献,直接调用。
标签:打表 lin gcd 网络 节点 树节点 去掉 状态 lru
原文地址:https://www.cnblogs.com/onioncyc/p/8979399.html