算法板子
比赛直接可用
TUStarry
/-/-/
展开
-
树状数组(BIT)带模板比赛可直接使用(区间修改&单点查询)
树状数组(BIT)带模板比赛可直接使用文章目录树状数组(BIT)带模板比赛可直接使用引入问题前置知识 - lowbit()运算相关信息全称起源与介绍作用基本概念树状数组的思想与实现思想总结两个操作add(i,k)ask(i)例题引入问题给出一个长度为n的数组,完成以下两种操作将第i个数加上k输出区间[x,y]内的区间和朴素算法O(n^2)单点修改:O(n)区间查询:O(n)引入树状数组O(nlog 2 n)单点修改:O(log2 n)区间查询:O(log 2 n)前置知识原创 2021-06-14 21:01:58 · 242 阅读 · 0 评论 -
模板:线段树 & 线段树区间赋值
基础线段树 & 线段树区间赋值struct SegmentTree{ // 线段树的结构体 int l, r; int dat, lazy;}t[maxn*4 + 2];void Build(int p,int l,int r){ t[p].l = l, t[p].r = r; if (l == r) { t[p].dat = a[l]; return; } int mid = (l + r) >> 1; Build(lson, l, mid); // p*2 Bui原创 2021-06-19 23:21:36 · 769 阅读 · 0 评论 -
模板:并查集(路径压缩)
并查集(路径压缩)#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>#include<string>#include<algorithm>#define error -1#define ok 1using namespace std;typedef long long ll;const原创 2021-06-19 23:09:36 · 123 阅读 · 0 评论 -
模板:KMP
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>char list1[1000001],list2[10001];int next[10001];int n, m, num;void Get_next(){ int i = 1,j = 0; next[0] = -1; while(i < m) {原创 2021-06-20 00:00:29 · 104 阅读 · 0 评论 -
模板:树状数组(单点修改&区间查询 || 单点查询&区间)
树状数组(单点修改&区间查询 || 单点查询&区间)#include<bits/stdc++.h>using namespade;int tr[99999];inline int lowbit(int x){ return x&-x;}void add(int x, int k){// 单点修改:O(log n) add(i, k) for(;x<=n;x+=lowbit(x)) tr[x] += k;}int ask原创 2021-06-19 23:14:13 · 84 阅读 · 0 评论