目录 1 理论2 实践3 参考 1 理论
树状数组(Fenwick Tree),也称为二叉索引树(Binary Indexed Tree, BIT),是一种用于高效计算数组前缀和的数据结构。它可以在 O ( l o g N ) O(logN) O(logN)的时间复杂度下完成单点更新、前缀和查…
目录 1 专题介绍2 训练 1 专题介绍
本专题用来汇总使用树状数组算法求解的题目。
应用场景:给你长度为n的数组nums,可以改变第i个数的大小,求数组下标区间[left, right]内的前缀和。要求时间复杂度不超过 O ( l o g N ) O(logN) O(logN)。 …
A 找到冠军 I 枚举求强于其他所有队的队 class Solution {
public:int findChampion(vector<vector<int>> &grid) {int n grid.size();int res 0;for (int i 0; i < n; i) {int t 0;for (int j 0; j < n; j)if (j ! i)t grid[i][j];if (t n - 1) …
题意:
思路:
将曼哈顿距离去绝对值的8种情况分别用BIT维护。暴力讨论比较最小值。BIT维护把每个点拆掉绝对值后的8种贡献。
#include<bits/stdc.h>
using namespace std;
typedef long long ll;
const int maxn 3e55;
const double eps 1e-10;…
http://cplusoj.com/d/senior/p/SS231025D
答案为 ∑ w [ x ] − w [ s o n [ x ] ] \sum w[x]-w[son[x]] ∑w[x]−w[son[x]], x x x 非儿子 要维护断边,LCT固然可以,但不一定需要
发现如果发生了变化,只会由重儿子变成次重儿子…
Problem DescriptionGive an connected undirected graph with nnodes and medges, (n,m≤105) which has no selfloops or multiple edges initially. Now we have qoperations (q≤105): ⋅1 u v: add an undirected edge from uto v; (u≠v&&1≤u,v≤n)⋅2 u v: cou…
const int MAXH107,MAXW107;
struct Fenwick {int W,H;int mat[MAXH][MAXW];void init(int w,int h){ //初始化矩阵memset(mat,0,sizeof(mat));Ww,Hh;}int lowbit(int x) {return x&-x;}void add(int x, int y, int d) {for(int i x; i < W; i lowbit(i))for(int j …
题目内容 原题链接 给定 n n n 个箱子,问是否存在一个箱子 x x x 是否可以放到另一个箱子 y y y 里。 需要满足 h x < h y , w x < w y , d x < d y h_x<h_y,w_x<w_y,d_x<d_y hx<hy,wx<wy,dx<dy。 箱子可以随意翻转。
…
一、题目
1、题目描述
在一维数轴上,小蓝画了 n n n 个闭区间线段,小桥会多次询问你,每次给定两个点 a , b a, b a,b,问有多少个区间包含 a a a 点,但是不包含 b b b 点。
输入格式
第一行输入两个整数 n , q…
题目
有一个初始为空的数组,你需要处理q(q<1e6)次操作,操作分四种:
① x,数组后面加一个新的数x
② - k,删掉数组最后面的k个值
③ !,回滚最后一次变更(只有①操作和②操作视为变更&…
236. Lowest Common Ancestor of a Binary Tree
题意:二叉树,求最近公共祖先,All Node.val are unique.
我的思路
首先把每个节点的深度得到,之后不停向上,直到val相同,存深度就用map存吧
但是它没有向…
板子题~
ACcode:
#include<bits/stdc.h>
using namespace std;
const int N 2e610;
typedef long long ll;
#define int long long
struct node{int l,r;int minv;
}tr[N*4];
int n,m,w[N];
void pushup(int u){tr[u].minvmin(tr[u<<1].minv,tr[u<<1|1].m…
题目内容 原题链接 给定一个长度为 n n n 的整数数组 a a a ,问所有子数组和的异或和是多少。
数据范围 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105 ∑ a i ≤ 1 0 6 \sum a_i\leq 10^6 ∑ai≤106
题解
基本思路
本题是 ARC092D - Two Sequences 的同类型…
文章目录 1、思路引入2、求lowbit(n)3、对某个元素进行加法操作(单点更新)4、查询前缀和5、统计A[x]~A[y] 的值1、思路引入
如果线段树每个节点维护的是对应区间的和,比如说计算从 s s s 到 t t t 的和 ( a s + … + a t ) (a_s+…+a_t) (as+…+at),在基于线段树的实…
A 3069. 将元素分配到两个数组中 I 模拟 class Solution {
public:vector<int> resultArray(vector<int> &nums) {vector<int> r1{nums[0]}, r2{nums[1]};for (int i 2; i < nums.size(); i) {if (r1.back() > r2.back())r1.push_back(nums[i]);e…