上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页
摘要: [传送门] 题意就是给一排围栏,每个围栏都有一个高度,查询区间$\left[l, r\right]$之间长度为$w$的子区间的最小高度的最大值。首先,这个最大值肯定是这个区间里的围栏的某个高度,如果是一个未出现过的高度,显然能有更高的高度满足条件。那么就可以考虑在离散化后的高度数组里二分答案,然后c 阅读全文
posted @ 2019-10-14 18:21 Mrzdtz220 阅读(169) 评论(0) 推荐(0)
摘要: [传送门] 比赛的时候想了半天的带修改主席树(其实之前只写过一次。),两个log甚至三个log都想了,自闭了五个小时还是不会实现。问了一下西瓜得到了一个非常妙的1 log解法。此处膜瓜🍉 一操作相当于把一个数删掉,因为$a_i + 10^7$肯定不会影响到$n + 1$,最坏情况下也能直接取$n 阅读全文
posted @ 2019-10-14 18:19 Mrzdtz220 阅读(110) 评论(0) 推荐(0)
摘要: [传送门] 其实就是这些数字前面能加正负号,在满足正负号均出现的情况下价值最大。那么就可以无脑DP$f[i][j][k]$表示到了第$i$位,正号是否出现($j$、$k$为$0$或$1$)能得到的最大价值答案就是$f[n][1][1]$$n$为1的时候特判一下就行举几个例子就能发现加正负号这个方法是 阅读全文
posted @ 2019-10-14 18:17 Mrzdtz220 阅读(150) 评论(0) 推荐(0)
摘要: [传送门] 如果只有单次询问,可以直接树形DP$f\left[u\right]$表示以$u$为根的子树中所有资源丰富的岛屿不与$u$联通的最小代价转移方程显然若儿子节点$v$为资源丰富的岛屿$f\left[u\right] = f\left[u\right] + w\left[u, v\right] 阅读全文
posted @ 2019-10-14 18:09 Mrzdtz220 阅读(97) 评论(0) 推荐(0)
摘要: D - Ki 题意:给一棵有根树,节点1为根,有$Q$次操作,每次操作将一个节点及其子树的所有节点的权值加上一个值,问最后每个节点的权值。 思路:dfs序再差分一下就行了。 #include <bits/stdc++.h> using namespace std; const int N = 2e5 阅读全文
posted @ 2019-10-14 14:32 Mrzdtz220 阅读(318) 评论(0) 推荐(0)
摘要: [传送门] 将第二维离散化一下,按第一维从大到小,第二维从小到大,第三维从大到小排序,这样即使第一维相同的情况下也不会重,然后用一棵线段树维护第二维为$I_{i}$时第三维的最大值,插入每一个元素之前先查询$\left[I_{i} + 1, n\right]$的最大值,若查询得到的$x$大于$R_{ 阅读全文
posted @ 2019-10-14 14:27 Mrzdtz220 阅读(128) 评论(0) 推荐(0)
摘要: [传送门] 分块,每一块维护一个单调递增的数组$w$,修改时因为区间加不会影响相邻元素的大小关系,所以在对于一整块的区间加打标记就行了。若不在同一块内就暴力修改每一个数,重新维护一次$w$数组,每次修改最多需要重构两块。查询操作先对每一块的$w$数组二分看存不存在$y$,最优解肯定由第一次出现$y$ 阅读全文
posted @ 2019-10-14 14:23 Mrzdtz220 阅读(171) 评论(0) 推荐(0)
摘要: [传送门] 直接想最暴力的做法就是正解了。每次询问都把两个串的回文树建出来,然后再两棵树上同时dfs,经过相同的节点答案就加一。遇到一个不存在的就退出。再把询问记忆化一下就OK了。复杂度是 $O(n \sqrt n)$因为每次dfs的复杂度跟短的串的长度有关。自己写给写T了。学习了下优秀写法。多开一 阅读全文
posted @ 2019-10-13 01:55 Mrzdtz220 阅读(109) 评论(0) 推荐(0)
摘要: [传送门] 考虑计算直径的 dp 方法。 $d[u]$ 表示以 $u$ 为根的子树能 $u$ 能走到的最远距离 $dp[u]$ 表示以 $u$ 为根的子树的直径那么每次dfs一个子节点后$dp[u] = max(d[u] + d[v] + 1, dp[u])$$d[u] = max(d[v] + 1 阅读全文
posted @ 2019-10-13 01:53 Mrzdtz220 阅读(168) 评论(0) 推荐(0)
摘要: [传送门] 很明显,可以转化成求每个点在两棵树中对应的子树中有多少个相同的节点,对答案的贡献就是$C(x, 2)$。关键就是怎么求这个东西。一是,对第一棵树求出dfs序,然后dfs第二棵树,用树状数组维护节点是否遍历到。对应下标就是第一棵树的dfs序,求每个节点递归其子树前后对应子树的区间和,作个差 阅读全文
posted @ 2019-10-13 01:51 Mrzdtz220 阅读(116) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 32 下一页