随笔分类 - 模板
摘要:##逆元 定义: 当x * y≡1(mod p),y就是x在mod p下的逆元 应用: a/b≡a * x(mod p),x就是a的乘法逆元 我们可以将a/b≡a * x(mod p)这个式子化简,两边同乘b-->a≡a * b * x(mod p)-->b * x≡1(mod p) 又有费马小定理
阅读全文
摘要:ll lowbit(ll x){//求数二进制最后一位 return x&-x; } ll query(ll x){//查询1-x的和 ll sum=0; for(ll i=x;i;i-=lowbit(i)) sum+=w[i]; return sum; } ll modify(ll x,ll y)
阅读全文
摘要:__int128是c++中一个最高39位的类型。 __int128除了输入输出需要特殊处理其他的与普通的int没有区别,输入输出采用快读的方式。 按照模板的方式使用即可。 template <typename _Tp> inline void read(_Tp&x) {//输入 char ch;bo
阅读全文
摘要:ll lowbit(ll x){//取二进制最后一位 return x&(-x); } void update(ll x,ll y,ll n){//单点更新,更新这个点的所有子节点的和,类似于该点的前缀和 for(ll i=x;i<=n;i+=lowbit(i)) l[i]+=y; } ll get
阅读全文
摘要:1.dijkstra算法: 从一点开始,更新所能到达的点的最小值,不能判断有负权值的图 模板:(与Prime算法基本相同) void dij(){//堆优化模板 priority_queue<pll,vector<pll>,greater<pll>> q; memset(dis,0x3f,sizeo
阅读全文
摘要:1.prime算法 prime算法类似于bfs,就是判断每次连接的点中距离最短的,加入到树中,具体如下: prime算法要求一开始随便选择一个点作为起点,因为最小生成树包括所有点,所以起点随机即可(一般选1),将该点加入一个集合,然后判断集合中所有点与之相连的点中最小的,将其加入集合中,加入集合的点
阅读全文