上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页
摘要: 我的做法: 给询问按$deep[v]+d$排序,每次做到某一深度的时候,先给这个深度所有点的值清0,然后直接改v的子树 官方做法比较妙妙: dfs,进入v的时候给$[deep[v],deep[v]+d]+=x$,出来的时候再减回来 日常忘开longlong,这回事变量开了输出没开 阅读全文
posted @ 2018-11-16 08:38 Ressed 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 可以直接套动态dp,但因为它询问之间相互独立,所以可以直接倍增记x转移到fa[x]的矩阵 阅读全文
posted @ 2018-11-16 08:32 Ressed 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 用途 对于某些树形dp(目前只会树上最大权独立集或者类似的),动态地修改点权,并询问修改后的dp值 做法(树剖版) 以最大权独立集为例 设$f[x][0/1]$表示x选不选,这棵子树的最大权独立集大小 那么有(设y是x的孩子) $$f[x][0]=\sum{max\{f[y][0],f[y][1]\ 阅读全文
posted @ 2018-11-16 08:06 Ressed 阅读(685) 评论(0) 推荐(1) 编辑
摘要: 首先我们发现$\frac{b+\sqrt{d}}{2}$这个形式好像一元二次方程的求根公式啊(???反正我发现不了) 然后我们又想到虽然这个东西不好求但是$(\frac{b-\sqrt{d}}{2})^n$好像挺好求的啊(???反正我想不到)(由题目给的范围,这玩意在(-1,1)) 于是把这个方程写 阅读全文
posted @ 2018-11-15 18:46 Ressed 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 用途 求回文子串 做法 先考虑回文子串以某字符为中心的情况,即长度为奇数 推着做,记rad[i]为以i位置为中心的最大半径(包含中点) 考虑怎么求rad[i]。找之前的一个右端点最靠右的位置p,设它的中心是j 如果有i<p,那么找到i关于j的对称点2*j-i,那么一定$rad[i]>=min\{ra 阅读全文
posted @ 2018-11-14 13:01 Ressed 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 求公共前缀的问题可以用hash+二分来解决,但这个是动态的,所以我们用平衡树来维护区间的hash值 复杂度$O(mlog^2n)$ 阅读全文
posted @ 2018-11-14 12:24 Ressed 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 开b组单调队列,分别维护此时某一列中的最大/最小值 然后我每次把它们的头取出来,塞到维护行的单调队列里,就是n*n的最大/最小值 阅读全文
posted @ 2018-11-13 08:17 Ressed 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 我们先约定:(左) 窗口_人人人人人 (右) 可以发现,我们只需要知道最靠左的还没打饭的人 以及它身后7个人的状态 以及上一个打饭的人是谁 因为他左面的就都打过了 右面7个人以后肯定还没打 可以设f[i][j][k]表示这是第i个人,身后7个人的状态是j,上一个打饭的是k 但其实上一个打饭的离他最远 阅读全文
posted @ 2018-11-13 08:13 Ressed 阅读(115) 评论(0) 推荐(0) 编辑
摘要: mulx的操作,其实就是给r+1的系数+=r的系数,然后删掉r,把l~r-1向右移一位,再插一个0到原来的位置 splay维护区间加和区间乘就好了 (一定要注意做事的顺序,一件事都做完了再去做别的,否则一splay就全乱套了..) 阅读全文
posted @ 2018-11-09 14:49 Ressed 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 求1~n组成一个抖动序列的方案数 首先这种序列有一些非常妙妙但我发现不了的性质 1.对于一个抖动序列,如果i和i+1不相邻,则交换i和i+1,他还是个抖动序列 2.对于一个抖动序列,我把每个数拿n+1减一下(上下翻转),他还是个抖动序列,只不过波峰和波谷换了一下 3.对于一个抖动序列,我把它左右翻转 阅读全文
posted @ 2018-11-09 14:40 Ressed 阅读(115) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页