随笔分类 -  板子

摘要:倍增求lca struct edge{ int v,w; }; //思考:要想知道一个数有几个二级制位,直接n=__lg(x) //我们可以知道<n最近的2的次幂,9最大的是8,8虽然是2的3次方,但要遍历它的每一位 //需要3到0开始,也就是考虑到0的影响,我们可以正好满足偏移。 //2的3次方有 阅读全文 »
posted @ 2024-04-20 03:41 potential-star 阅读(12) 评论(0) 推荐(0) 编辑
摘要:将O(n)优化成o(根号n) [CQOI2007] 余数求和 题目描述 给出正整数 nk,请计算 G(n,k)=i=1nkmodi 对于 100% 的数据,保证 1n,k109 void 阅读全文 »
posted @ 2024-01-29 23:09 potential-star 阅读(4) 评论(0) 推荐(0) 编辑
摘要:给定一棵有 n 个点的树,询问树上距离为 k 的点对是否存在。 第一行两个数 n,m,n个点。 第 2 到第 n 行,每行三个整数 u,v,w,代表树上存在一条连接 uv 边权为 w 的路径。 接下来 m 行, 阅读全文 »
posted @ 2023-12-10 03:39 potential-star 阅读(9) 评论(0) 推荐(0) 编辑
摘要:树上启发式合并(常常也叫DSU On Tree,但其实和DSU并没有特别大关系),是一种解决某些树上离线问题的算法,尤其常被用于解决“对每个节点,询问关于其子树的某些信息”这样的问题。 假设我们要对树上的每个节点p求ans[p] ,且这个ans[p] 可以通过合并p的子节点的某些信息得知,一般来说我 阅读全文 »
posted @ 2023-12-10 03:29 potential-star 阅读(47) 评论(0) 推荐(0) 编辑
摘要:已知一棵包含 N 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 1 x y z,表示将树从 xy 结点最短路径上所有节点的值都加上 z。 2 x y,表示求树从 xy 结点最短路径上所有节点的值之和。 3 x z,表 阅读全文 »
posted @ 2023-12-10 03:16 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文 »
posted @ 2023-12-10 03:02 potential-star 阅读(13) 评论(0) 推荐(0) 编辑
摘要:给定 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 阅读全文 »
posted @ 2023-12-10 02:51 potential-star 阅读(3) 评论(0) 推荐(0) 编辑
摘要:给定 n 个整数构成的序列 a,将对于指定的闭区间 [l,r] 查询其区间内的第 k 小值。 题目一开始的离散化复杂度为O(nlogn),构建基础主席树复杂度为O(nlogn),统计并插入的复杂度是O(nlogn+nlogn)=O(nlogn),询问的 阅读全文 »
posted @ 2023-12-10 02:15 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:最大异或和 给定一个非负整数序列 {a},初始长度为 N。 有 M 个操作,有以下两种操作类型: A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N1。 Q l r x:询问操作,你需要找到一个位置 p,满足 \(l \l 阅读全文 »
posted @ 2023-12-10 01:54 potential-star 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出两个字符串 s1s2,若 s1 的区间 [l,r] 子串与 s2 完全相同,则称 s2s1 中出现了,其出现位置为 l。 现在请你求出 s2s1 中所有出现的位置。 定义 阅读全文 »
posted @ 2023-12-10 01:31 potential-star 阅读(9) 评论(0) 推荐(0) 编辑
摘要:给定一个长度为 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 阅读全文 »
posted @ 2023-12-09 22:51 potential-star 阅读(9) 评论(0) 推荐(0) 编辑
摘要: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; //注释掉的部 阅读全文 »
posted @ 2023-12-09 21:56 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x; Q x 询问一个字符串在集合中出现了多少次。 所有输入的字符串总长度不超过 105( 也就是节点数) const int N=100010; int n; char s[N]; int ch[N][26],c 阅读全文 »
posted @ 2023-12-09 16:58 potential-star 阅读(10) 评论(0) 推荐(0) 编辑
摘要:单哈希且用自然溢出代替取模操作,常数小但是容易被卡 单字符串区间内比较,查询子串hash值 typedef unsigned long long ULL; const int N = 100010, P = 131; int n, m; char str[N]; ULL h[N], p[N]; UL 阅读全文 »
posted @ 2023-12-09 15:34 potential-star 阅读(13) 评论(0) 推荐(0) 编辑
摘要:时间复杂度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 阅读全文 »
posted @ 2023-12-09 13:48 potential-star 阅读(68) 评论(0) 推荐(0) 编辑
摘要:时间复杂度为Θ(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 阅读全文 »
posted @ 2023-12-09 13:25 potential-star 阅读(7) 评论(0) 推荐(0) 编辑
摘要:假设 n 表示图中点数,m 表示图中边数。 Prim算法堆优化 时间复杂度 O(nlogn)。 核心思想:每次挑一条与当前集合相连的最短边。 code int ans,cnt; struct edge{int v,w;}; vector<edge> e[N]; int d[N 阅读全文 »
posted @ 2023-12-08 22:20 potential-star 阅读(6) 评论(0) 推荐(0) 编辑
摘要:const int N = 100010; int n,m,a,b; vector<int> e[N], tp; int din[N];//入度数组 bool toposort(){ queue<int> q; for(int i = 1; i <= n; i++) if(din[i]==0) q. 阅读全文 »
posted @ 2023-12-08 22:10 potential-star 阅读(5) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.com.cn/problem/P4316 本题暂时只写了用期望dp经典套路,套上期望DP的基本套路,设dp(u)为到达u点的期望长度。 期望dp,也叫概率dp 一般来说,期望dp找到正确的状态后,转移是比较容易想到的。 但一般情况下,状态一定是“可数”的 事实上, 阅读全文 »
posted @ 2023-12-05 00:56 potential-star 阅读(18) 评论(0) 推荐(0) 编辑
摘要:void floyd() { for (int k = 1; k <= n; k ++ ) for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= n; j ++ ) d[i][j] = min(d[i][j], d[i][k] + d[k][j]); 阅读全文 »
posted @ 2023-12-03 21:48 potential-star 阅读(4) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示