摘要:
寻找三元组(i,j,k),使得(i,j)(j,k)都是回文字串,其中i<=j<k. 可以发现,对于每一位i,只要预处理出来有多少个以i为右端的回文串和以i为左端的回文串。把那些串的另一端的坐标和计算出来就可以了。 然后ans = ∑cntR[i]*cntL[i+1] 这里cntR[i]记录以i为右端 阅读全文
摘要:
1.manacher HDU5785 Interesting 2.kmp HDU5763-Another Meaning kmp记录子串数,dp转移意思数 3.后缀数组 HDU5769 Substring 4.hash (Rabin karp) 阅读全文
摘要:
数据结构 STL 栈 队列 堆 树(数据结构) | | | | 线段树 平衡树 生成树 | | | 各种应用 | | | | | | Splay 红黑树(map) Treap SBT prim kruskual 并查集 | | | | | 路径压缩 按秩合并 种族并查集 可撤销并查集 高级数据结构 阅读全文
摘要:
首先想到的就是sort一下,然后每个集合都在排过序的数组里面取,不重复。 这样就推出公式dp[i][j] = min(dp[k][j-1] + (s[i]-s[k+1])^2) 其中dp[i][j]为在第i位完成j个分组的。 不考虑分组的情况下跟打印文章那题一样。考虑上需要有M个分组,就是两层for 阅读全文
摘要:
CDQ学习资料 day1cdq分治相关 CDQ的IOI论文 1.优化斜率dp 左边对右边影响维护一个凸包解决 需要知识:①凸包②斜率dp 题目:√ HDU3842 Machine Works HYSBZ 1492 货币兑换Cash 2.三维/多维偏序 cdq降维,剩下用数据结构维护。 需要知识:①L 阅读全文
摘要:
只想到了朴素的n^2做法,然后发现可以用splay维护。于是调了几个小时的splay。。。 splay的元素是从第二个开始的!第一个是之前插入的头节点! 阅读全文
摘要:
这道题可以树链剖分做。但是最近在给学弟搞数据结构复习了LCA树状数组RMQ 然后就搞了一发LCA+树状数组维护。 dis数组维护当前点到根节点的权值和。则dis(u,v) = dis[u]+dis[v]-2*dis[lca(u,v)] 修改的时候,单点修改影响了该点所有儿子的dis,刚好可以用dfs 阅读全文
摘要:
为了学CDQ分治,从斜率dp和凸包开始做吧。。 代码就是维护一个凸包。利用递增的性质丢掉不合适的点。 http://www.cnblogs.com/Rlemon/p/3184899.html 代码学的上面 很模板 阅读全文
摘要:
平面最远点对 由于点数为1e5,而整数点的情况下,凸包上点的个数为sqrt(M),M为范围。 这样求出凸包之后n^2枚举维护距离就可以了 否则就用旋转卡壳。 这里用了挑战上的做法,比较简洁。 阅读全文
摘要:
用每个点代表父节点到此点的边。建立一一映射后就可以用点权的方法处理了。 注意的是路径两端节点的处理 阅读全文