题目链接: P2633 Count on a tree solution: LCA好题.询问第k大,不难想到主席树和前缀和思想,对于每个点$x$,我们可以用主席树维护root到$x$上的序列,然后查询$x,y$路径上的第$k$小只需要用前缀和维护权值线段树,用$x+y-lca(x,y)-f[lca( ...
分类:
其他好文 时间:
2020-07-26 15:45:20
阅读次数:
73
题目链接:https://www.acwing.com/problem/content/258/ 题目给出长度为n的序列,操作有两种,求[p,n]段的异或和再与x的异或,或者增加一个数x,使用可持久化Trie和异或前缀和可以解决,但是需要在[l-1,r-1]区间内,右区间自然满足,左区间的话需要加上 ...
分类:
编程语言 时间:
2020-07-25 23:31:49
阅读次数:
75
package shuzu; /* 152. 乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: ...
分类:
编程语言 时间:
2020-07-24 15:31:39
阅读次数:
60
package shuzu; import java.util.HashMap; /* 1013. 将数组分成和相等的三个部分 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 i+1 < j 且满足 A[0] + A[ ...
分类:
编程语言 时间:
2020-07-23 16:28:28
阅读次数:
66
模板: ditu[x1][y1]++; ditu[x2+1][y1]--; ditu[x1][y2+1]--; ditu[x2+1][y2+1]++; for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) dp[i][j]=dp[i-1][j]+dp[i][j-1] ...
分类:
其他好文 时间:
2020-07-19 18:05:32
阅读次数:
73
主席树(可持久化线段树) 前置芝士 知识点 线段树,权值线段树(不一样),离散化,前缀和(思想) 由来 据说,是一位叫fotile主席的大大在写一道题时因为不会划分树就临时yy出一个算法,于是,这算法就这么诞生了。 作用 对区间求 \(kth\) 思想 思考优化策略 一列数,可以对于每个点i都建一棵 ...
分类:
其他好文 时间:
2020-07-19 17:57:51
阅读次数:
52
Tom and Jerry are going on a vacation. They are now driving on a one-way road and several cars are in front of them. To be more specific, there are nn ...
分类:
其他好文 时间:
2020-07-17 09:30:42
阅读次数:
82
##题面 地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。 注意:不同目标可能在同一位置。 现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。 激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 ...
方法一:不用统计前缀和,只需要统计前i个数的余数就可以,若之前和的余数和当前和的余数相等则子数组可以整除K,遍历一遍即可 class Solution { public int subarraysDivByK(int[] A, int k) { int n = A.length; Map<Integ ...
分类:
编程语言 时间:
2020-07-15 23:41:52
阅读次数:
64
前缀和 可以利用前缀和解决用o(n)的时间复杂度求出一段序列的某一段区间的和。 一维前缀和 S[i] = a[1] + a[2] + ... a[i] a[l] + ... + a[r] = S[r] - S[l - 1] 例题 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l ...
分类:
其他好文 时间:
2020-07-15 22:59:14
阅读次数:
47