![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识归纳
悭吝韶华
在学习Unity和图形学.
展开
-
矩阵树定理(生成树计数)学习笔记
度数矩阵对于一个图GGG,定义其度数矩阵为D(G)D(G)D(G).D(G)D(G)D(G)是一个n∗nn*nn∗n大小的对角线矩阵.对角线上元素d(i,i)d_{(i,i)}d(i,i)为顶点iii的度数。(非对角线上的元素d(i,j)d_{(i,j)}d(i,j)为0)邻接矩阵对于一个图GGG,定义其临接矩阵为A(G)A(G)A(G).a(i,j)a_{(i,j)}a(i,j)为viv_ivi和vjv_jvj之间邻接的边数(注意可以有重边,即大于1)Kirchoff矩阵树定理Ki原创 2020-08-08 11:17:41 · 224 阅读 · 0 评论 -
二分图匹配
模板1.如何找到二分图的最大匹配匈牙利算法时间复杂度(L*(R+M))L为左部点数,R为右部点数,M为边数。核心思想巧妙利用递归去寻找增广路径。对每个左部点X进行处理,看能不能在右部找到匹配点。如果该右部点已经使用过,那么对和它匹配的那个左部点Y进行搜索,看能不能找到一个替换,如果找到则表明可以让X抢占Y之前的匹配点.AC代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define M原创 2020-07-30 20:46:26 · 460 阅读 · 0 评论 -
关于DP的几种优化
单调队列优化通常转移条件满足:dp[i]=max(dp[j]+a[j])(j<i)dp[i]=max(dp[j]+a[j])(j<i)dp[i]=max(dp[j]+a[j])(j<i)即转移条件只跟前面的某一项有关,且满足取最值条件。斜率优化通常转移条件满足:dp[i]=max(dp[j]+a[i]∗a[j])(j<i)dp[i]=max(dp[j]+a[i]*a[j])(j<i)dp[i]=max(dp[j]+a[i]∗a[j])(j<i)即存在某一项即有原创 2020-07-27 00:10:10 · 460 阅读 · 0 评论 -
数论分块
除法分块对于k/i的结果,当k不变时,我们可以发现是随i呈连续变化的.即我们可以将k/i值一样的部分一起处理,求出左右端点即可。另t=n/lt=n/lt=n/l,则r=n/tr=n/tr=n/t。ttt表示当前l对应的n/in/in/i值。rrr表示满足n/in/in/i=ttt的最大整数,再变大,只能让t变小则不符合。模板题链接...原创 2020-07-15 00:42:54 · 115 阅读 · 0 评论 -
单调队列
首先你可以看下这道题,单调队列就是用来解决这道题的。模板题可以看到:你要在O(n)时间内求出每个连续区间的最值。我们知道我们总希望可以利用前一个连续区间的答案,但它有时效性(越过了他的作用范围就不能再使用),这样问题该如何解决呢?其实我们可以维护一个双端队列:队列的一端,一般用队尾,表示最值(可能已经失效,失效就弹出来即可)队列中所有元素都是有序排列的,只要队尾仍具有时效性,他就是最值。那么失去了时效性该怎么办呢?我们又该如何维护这个队列使得队列中所有元素按大小有序排列呢?这是我们需要思原创 2020-07-13 19:22:11 · 117 阅读 · 0 评论 -
关于2-SAT
关于2-SAT有两种模板第一种用到了tarjan缩点第二种则是dfs(可以实现字典序最小)关于什么是2-SAT,先不介绍,看下这道模板题。模板题链接可以看到,我们需要找到一个合理的选择,使得所有被选择的都不会发生冲突。下面以id+m代表第id号家庭的丈夫,id+w代表第id号家庭的妻子。如1m代表一号家庭的丈夫。如果1m和2w有矛盾,那么:1.如果我们要选择1m,就不能选用2w反过来说如果我们选择1m,就必须选用2m(因为一个家庭必须选择一人)2.同样如果选择了2w,那么必须选用1w基原创 2020-07-11 00:05:48 · 110 阅读 · 0 评论 -
ACM中一些实用函数
memset关于复杂度:快于for,但是依然接近于O(n)O(n)O(n),在数据组数多时慎用,以免超时。memset(a,127,sizeof(a));将a数组每一字节除最高位以外全赋上1,即01111111,用来获得一个极大的初值。memset(a,-1,sizeof(a));将a数组中所有元素都设置为-1memset(a,0,sizeof(a));将a数组中所有元素都设置为0max_elementReturns an iterator pointing to the element原创 2020-07-09 00:10:36 · 240 阅读 · 0 评论 -
图论-关于最短距离的各种情况
单源最短路:即求出图中一个点到另一个点的距离推荐算法:dijkstra堆优化限制条件: 图中不存在权值为负数的边原因:负边权会破坏基于每次选择最近点的贪心策略,即一个已经松弛完毕的点有可能又会被之后的其他点松弛,造成错误。#include <bits/stdc++.h>using namespace std;#define ll long long#define maxn 100005vector<pair<int,int> >edge[maxn];t原创 2020-07-08 23:47:27 · 1201 阅读 · 0 评论 -
关于C语言一些容易忽略的点
1.关于自动类型转换的问题运行后可以发现AB两处cnt的输出不同。此处的sqrt返回值为double,AB两处一处用了强制类型转换,一处用了自动类型转换。输出结果:可以发现A处值不一样,double 和 long long 运算,double优先级高,所以都转换为double类型,最后double类型作为返回值又赋给了long long变量,此过程发生了降级。关于自动类型转换的规则如下:同一句语句或表达式如果使用了多种类型的变量和常量(类型混用),C 会自动把它们转换成同一种类型。以下是自动类原创 2020-07-07 14:38:45 · 160 阅读 · 0 评论 -
数论入门篇
算数基本定理:一个数可被唯一地表示成若干个素数的乘积。x=p1cnt1∗p2cnt2∗p3cnt3∗⋯∗pncntnx=p^{cnt_1}_1*p^{cnt_2}_2*p^{cnt_3}_3*\cdots*p^{cnt_n}_nx=p1cnt1∗p2cnt2∗p3cnt3∗⋯∗pncntncnticnt_icnti表示x分解后的乘积表达式中有cnticnt_icnti个pip_ipi.定理的一些基本应用1.求出x的因子个数factorCnt=(cnt1+1)∗(cnt2+1原创 2020-07-06 21:22:30 · 423 阅读 · 1 评论