随笔分类 - 板子
摘要:N,M,S,分别表示树的结点个数、询问的个数和树根结点 理论时间复杂度上界就是O(2n+mlogn) const int N=500010; int n,m,s,a,b; vector<int> e[N]; int fa[N],son[N],dep[N],siz[N]; int top[N]; vo
阅读全文
摘要:给定 n×n 的矩阵 A,求 A^k。 typedef long long LL; const int mod=1000000007; struct matrix{ LL c[101][101]; matrix(){memset(c, 0, sizeof c);} } A, res; LL n, k
阅读全文
摘要:给定 n 个整数构成的序列 a,将对于指定的闭区间 [l,r] 查询其区间内的第 k 小值。 题目一开始的离散化复杂度为\(O(n\log n)\),构建基础主席树复杂度为\(O(n\log n)\),统计并插入的复杂度是\(O(n\log n + n\log n)=O(n\log n)\),询问的
阅读全文
摘要:最大异或和 给定一个非负整数序列 \(\{a\}\),初始长度为 \(N\)。 有 \(M\) 个操作,有以下两种操作类型: A x:添加操作,表示在序列末尾添加一个数 \(x\),序列的长度 \(N\) 加 \(1\)。 Q l r x:询问操作,你需要找到一个位置 \(p\),满足 \(l \l
阅读全文
摘要:题目描述 给出两个字符串 \(s_1\) 和 \(s_2\),若 \(s_1\) 的区间 \([l, r]\) 子串与 \(s_2\) 完全相同,则称 \(s_2\) 在 \(s_1\) 中出现了,其出现位置为 \(l\)。 现在请你求出 \(s_2\) 在 \(s_1\) 中所有出现的位置。 定义
阅读全文
摘要:给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。每个数字不超过1e9。 int n, m; int a[N]; int tr[N]; vector<int>lan; int lowbit(int x){ return x&(-x); } void discrete() { sort(l
阅读全文
摘要:const int N = 1e5 + 10; int n, m; int a[N]; struct Tree{ int l,r; ll sum,add; }tr[4*N]; void build(int u,int l,int r){ // l=tr[u].l;r=tr[u].r; //注释掉的部
阅读全文
摘要:维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 \(x\); Q x 询问一个字符串在集合中出现了多少次。 所有输入的字符串总长度不超过 \(10^5\)( 也就是节点数) const int N=100010; int n; char s[N]; int ch[N][26],c
阅读全文
摘要:单哈希且用自然溢出代替取模操作,常数小但是容易被卡 单字符串区间内比较,查询子串hash值 typedef unsigned long long ULL; const int N = 100010, P = 131; int n, m; char str[N]; ULL h[N], p[N]; UL
阅读全文
摘要:时间复杂度O(nm^2),理论上限 //n,m,s,t,分别代表该网络的点数n,网络的边数m,源点编号s,汇点编号t。 const int N=5010,M=100010,INF=1e8; int n,m,S,T; struct edge{int v,c,w,ne;}e[M]; int h[N],i
阅读全文
摘要:时间复杂度为Θ(n^3) const int inf =0x3f3f3f3f; const int N=505; long long w[N][N]; long long la[N],lb[N]; bool va[N],vb[N]; long long match[N]; long long n,m
阅读全文

浙公网安备 33010602011771号