随笔分类 -  板子

摘要:倍增求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 阅读(27) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1950/problem/G 在非连通图上找到一条包含点最多的路径,dp数组维护可达性 // Problem: G. Shuffling Songs // Contest: Codeforces - Codeforces Round 93 阅读全文
posted @ 2024-03-29 16:05 potential-star 阅读(41) 评论(0) 推荐(0)
摘要:动态维护第k大 priority_queue<int> a; //大根堆 priority_queue<int,vector<int>,greater<int> > b; for(int i=1; i<=n; i++){ int x; scanf("%d",&x); if(b.empty()||x> 阅读全文
posted @ 2024-03-23 20:43 potential-star 阅读(21) 评论(0) 推荐(0)
摘要:debug:重载乘号的时候要把两个传进来的矩阵用起来 // Problem: P3390 【模板】矩阵快速幂 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P3390 // Memory Limit: 256 MB // Tim 阅读全文
posted @ 2024-03-21 22:02 potential-star 阅读(20) 评论(0) 推荐(0)
摘要:int n, m; int k; struct matrix{ int c[101][101]; matrix(){memset(c,0,sizeof c);} }; matrix operator*(matrix &a,matrix &b){ matrix t; for(int i=1;i<=n; 阅读全文
posted @ 2024-03-21 21:25 potential-star 阅读(29) 评论(0) 推荐(0)
摘要:1.单点加 2.前缀和查询 int n, m; int a[N]; int tr[N]; int lowbit(int x){ return x&(-x); } void add(int pos,int k){ for(int i=pos;i<=n;i+=lowbit(i))tr[i]+=k; } 阅读全文
posted @ 2024-03-20 22:30 potential-star 阅读(170) 评论(0) 推荐(0)
摘要:以一道区间和查询来说明板子如何使用 1.merge的时候只需要维护两个根节点的距离,利用的是合并时题目给的信息 2.find的时候更新维护是子节点到根的距离 3.需要加一个查询函数,因为距离数组是开在结构体内部的。 题目描述 对于一个长度为 \(N\) 的整数数列 \(A_{1}, A_{2}, \ 阅读全文
posted @ 2024-03-02 16:56 potential-star 阅读(30) 评论(0) 推荐(0)
摘要:int id(int x,int y,int m){ //m列 return m*(x-1)+y; } pii rid(int u,int m){ int x=(u+m-1)/m;//m列 int y=u%m;if(y==0)y+=m; return make_pair(x,y); } 阅读全文
posted @ 2024-02-28 21:32 potential-star 阅读(95) 评论(0) 推荐(0)
摘要:inline void read(__int128 &x) { x=0; int f=1;//判断正负 char ch=getchar();//读入字符 while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&& 阅读全文
posted @ 2024-02-22 19:01 potential-star 阅读(25) 评论(0) 推荐(0)
摘要:三分法是二分法的变种,他最基本的用途是求单峰函数的极值点。 三分适用的情况:有唯一的最大值,满足最大值左侧严格单调递增,右侧严格单调递减(或左减右增)。强调严格单调,这样在确定最值是才能判断最值的位置,否则三分法不能缩小左右边界。 三分整数模板 整数的三分可能具有不确定性,可以通过改变while循环 阅读全文
posted @ 2024-02-01 22:07 potential-star 阅读(160) 评论(0) 推荐(0)
摘要:将O(n)优化成o(根号n) [CQOI2007] 余数求和 题目描述 给出正整数 \(n\) 和 \(k\),请计算 \[G(n, k) = \sum_{i = 1}^n k \bmod i \] 对于 \(100\%\) 的数据,保证 \(1 \leq n, k \leq 10^9\) void 阅读全文
posted @ 2024-01-29 23:09 potential-star 阅读(25) 评论(0) 推荐(0)
摘要:输出一个整数,表示a*b mod p的值。 数据范围 1≤a,b,p≤1018 ll qadd(ll a, ll b, ll p) { ll res = 0; while (b) { if (b & 1) res = (res + a) % p; a = (a + a) % p; b >>= 1; 阅读全文
posted @ 2023-12-16 20:23 potential-star 阅读(253) 评论(0) 推荐(0)
摘要:给定一棵有 \(n\) 个点的树,询问树上距离为 \(k\) 的点对是否存在。 第一行两个数 \(n,m\),n个点。 第 \(2\) 到第 \(n\) 行,每行三个整数 \(u, v, w\),代表树上存在一条连接 \(u\) 和 \(v\) 边权为 \(w\) 的路径。 接下来 \(m\) 行, 阅读全文
posted @ 2023-12-10 03:39 potential-star 阅读(24) 评论(0) 推荐(0)
摘要:树上启发式合并(常常也叫DSU On Tree,但其实和DSU并没有特别大关系),是一种解决某些树上离线问题的算法,尤其常被用于解决“对每个节点,询问关于其子树的某些信息”这样的问题。 假设我们要对树上的每个节点p求ans[p] ,且这个ans[p] 可以通过合并p的子节点的某些信息得知,一般来说我 阅读全文
posted @ 2023-12-10 03:29 potential-star 阅读(73) 评论(0) 推荐(0)
摘要:已知一棵包含 \(N\) 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 1 x y z,表示将树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值都加上 \(z\)。 2 x y,表示求树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值之和。 3 x z,表 阅读全文
posted @ 2023-12-10 03:16 potential-star 阅读(39) 评论(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 阅读(27) 评论(0) 推荐(0)