![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法知识点
文章平均质量分 59
yusen_123
这个作者很懒,什么都没留下…
展开
-
Matrix Equation(高斯线性异或消元+bitset优化)
对于b[i,j]*c[i,j],b[i,j]可以与a[i,i]异或让他转换到左边,而右边一列全为0。mod2,当这一行相乘1的个数为奇数时,z(i,j)为1,偶数为0,是异或消元。每一列的解是不能确定元素cn个的2^cn。我们发现对于矩阵C可以一列一列求。异或消元可以用bitset优化。原创 2024-07-26 01:47:09 · 606 阅读 · 0 评论 -
外星千足虫(高斯消元+bitset优化)
高斯异或线性方程组,但是n最多到2e3,所以用bitset优化一下(类似与二维数组,但取值只能是0或1,对时间的优化主要在两行数异或,从o(n)变为0(1))。原创 2024-07-24 00:58:04 · 407 阅读 · 0 评论 -
约旦消元求逆矩阵
LL a[N][N];int n;LL ans=1;while(b){b>>=1;a=a*a%mod;return ans;int guss()c<=n;c++)i<=n;if(!i<=2*n;i>=c;i<=n;i++)j>=c;j--)r++;i>=1;i--)j<=n;j++)k<=2*n;k++)return 1;cin>>n;i<=n;原创 2024-07-22 23:57:30 · 267 阅读 · 0 评论 -
OSU!题解(概率dp)
对于到i点的每一个l,如果第i+1点为1,那么会新增分数3*l^2+3*l+1;(p代表截止到i获得长度l的概率);)表示截止到i所获得的分数;原创 2024-07-16 08:45:36 · 176 阅读 · 0 评论 -
线性求1-n的逆元
2.设a=n/x,b=n%x;求x在modn的逆元。原创 2024-06-25 22:11:39 · 207 阅读 · 0 评论 -
二维前缀和
记录矩阵:(x1,y1),(x2,y2) a[x1][y1]++,a[x1][y2+1]--,a[x2+1][y1]--,a[x2+1][y2+1]++;读取矩阵:a[x2][y2]-a[x2][y1-1]-a[x1-1][y1]+a[x1][y1]。读取矩阵:a[x2][y2]-a[x2][y1-1]-a[x1-1][y1]+a[x1][y1]遍历一遍数组:使a[i][j]表示x在(1,i),y在(1,j)的子矩阵和。遍历一边数组,使a[i][j]表示x=i,y=j时的值。记录点:a[i][j]++;原创 2024-06-05 02:25:14 · 148 阅读 · 0 评论 -
牛客小白80E(二分图最大匹配模板)
match[v] || check(match[v]))//v点可以匹配,或者v点可以被以前的点让出来。原创 2023-10-29 20:33:59 · 88 阅读 · 0 评论 -
lower_bound()以及upper_bound()
value的数,找到返回该数字的地址,没找到则返回end。用这个地址减去first,得到的就是第一个大于等于target的值的下标。target 的值的地址,用这个地址减去first,得到的就是第一个大于等于target的值的下标。lower_bound()的返回值是第一个。的排好序的数组中,在数组的。原创 2023-10-17 02:14:29 · 303 阅读 · 0 评论 -
windy数(数位dp模板)
windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。windy想知道,在A和B之间,包括A和B,总共有多少个windy数?原创 2023-09-25 05:06:37 · 50 阅读 · 0 评论 -
kmp模板
int main()i <= n;i++)j++;ne[i] = j;i <= m;i++)j++;j = ne[j];return 0;原创 2023-09-19 18:42:23 · 33 阅读 · 0 评论 -
最小生成树
这个首先定一个点,定义其他点到他距离无穷大,将那个点放进优先队列(按边权从小到大),从当前点更新他到其他未在集合内的点距离,如果到其他点距离被更新,就将其他点放进优先队列,知道队列为空,或生成最小生成树。这种算法是从小到大枚举边的权重,当当前边可以连接两个不相连的点,即记录下来,当边数为n-1时,成最小生成树。原创 2023-09-13 23:21:48 · 35 阅读 · 0 评论 -
链式前向星
void addeg2(int a, int b, int w)//双向。void addeg(int a, int b, int w)//单向。存边有点类似链表的头插法。//遍历以a为起点的所有边。原创 2023-09-13 21:01:10 · 25 阅读 · 0 评论 -
字典树模板
char s[N];i < len;i++)if (!f[p][x])d[p]+=1;i <len;i++)if (!f[p][x])return 0;i <= cnt;i++)d[i] = 0;j <= 85;j++)cnt = 1;i <= n;i++)insert(s);i <= q;i++)原创 2023-09-10 09:14:51 · 55 阅读 · 1 评论 -
树形dp不定根(acwing287)
这是一道树形dp不定根的题,做法是先随意选取一个点作为根节点,从根节点到子节点遍历一遍,算出根节点所求的值,再根据得到的根节点值,深度优先搜索,得到各个点所要求值,比较得出答案。除源点和汇点之外,其余各点不贮存水,也就是流入该点的河道水量之和等于从该点流出的河道水量之和。接下来 N−1 行,每行包含三个整数 x,y,z,表示 x,y之间存在河道,且河道容量为 z。在流量不超过河道容量的前提下,求哪个点作为源点时,整个水系的流量最大,输出这个最大值。有一个树形的水系,由 N−1 条河道和 N个交叉点组成。原创 2023-08-30 19:57:50 · 38 阅读 · 0 评论 -
树形dp模板(acwing285)
i++)dfs(v);cin >> n;i <= n;i++)i <= n - 1;i++)vis[l] = 1;i <= n;i++)if (!vis[i])l = i;dfs(l);return 0;原创 2023-08-30 15:34:09 · 53 阅读 · 0 评论 -
线段树(建树,单点修改,区间修改(lazy标记),求区间维护值模板)
线段树基础模板原创 2023-08-17 16:44:53 · 55 阅读 · 1 评论