摘要:
当序列中最大和次大都是负数的时候,其相加会是一个更小的负数,因此答案为(Σai)+(m1+m2)*k,如果最大是正数次大是负数,那么一直相加直到两个数都为正数,当最大和次大都是正数时,做一下矩阵乘法即可。 代码 阅读全文
摘要:
树链剖分,先求出每个点的dfs序区间,查询时假设当前根为x,查询点为y,他们的dfs序分别为[xl,xr],[yl,yr],有三种情况,第一种x=y那么直接输出[1,n]的最小值,第二种这两个区间分离或者[xl,xr]包含[yl,yr],那么直接查询[yl,yr]的最小值,第三种[yl,yr]包含[ 阅读全文
摘要:
可持久化trie 代码 阅读全文
摘要:
树分治。以递归的顺序建造一个重心树,每层用数组维护所有点按年龄从小到大排序后,其到当前层重心的前缀和。询问时在每一层算出需要经过该层重心才能到达查询点的距离和,累加就是答案,该操作可以用之前维护的信息来进行操作,具体看代码。复杂度O(nlogn^2) 代码 阅读全文