学习笔记
Starformula_神诘
神诘
展开
-
逆元总结
逆元是个好东西,但太久不写就忘了。3777. 最短路(shortest) (Standard IO)Time Limits: 3000 ms Memory Limits: 262144 KB Detailed LimitsGoto ProblemSetDescription小Y最近学得了最短路算法,一直想找个机会好好练习一下。话虽这么说,OJ上最短路的题目都被他刷光了。正巧他的好朋友小A正在研究一类奇怪的图,他也想凑上去求下它的最短路。 小A研究的图可以这么看:在一个二维平面上有任意点(原创 2021-10-05 16:01:48 · 86 阅读 · 0 评论 -
状压DP 例题及学习笔记
玉米田农民 John 购买了一处肥沃的矩形牧场,分成 M * N个格子。他想在那里的一些格子中种植美味的玉米。遗憾的是,有些格子区域的土地是贫瘠的,不能耕种。精明的 FJ知道奶牛们进食时不喜欢和别的牛相邻,所以一旦在一个格子中种植玉米,那么他就不会在相邻的格子中种植,即没有两个被选中的格子拥有公共边。他还没有最终确定哪些格子要选择种植玉米。 作为一个思想开明的人,农民 John 希望考虑所有可行的选择格子种植方案。由于太开明,他还考虑一个格子都不选择的种植方案!请帮助农民 John 确定种原创 2021-07-20 11:58:23 · 136 阅读 · 0 评论 -
并查集及其优化及其扩展(加权) 学习笔记及其模板
首先普通并查集大家都诙谐。。。#include<bits/stdc++.h>using namespace std;int fa[1111111],i,j,x,y,z,m,rk[1111111];int finds(int xx){ if(fa[xx]==xx) return xx; else return finds(fa[xx]);}void unions(int xx,int yy){ int xxx=finds(xx),yyy=finds(yy); if(xxx=原创 2021-08-13 22:10:46 · 122 阅读 · 0 评论 -
多维前缀和 学习笔记 模板及例题
一维前缀和大家都会,二维就更好理解了。一维初始化: for(i=1;i<=n;i++) { q[i]=(q[i-1]+a[i]); }二维初始化其实花个图就可以了,这里直接上模板: q[1][1]=a[1][1]; for(i=2;i<=m;i++) { q[1][i]=(q[1][i-1]+a[1][i]); } for(i=2;i<=n;i++) { q[i][1]=(q[i-1][1]+a[i][1]); } for(i=2;i<=n;i原创 2021-08-12 18:39:57 · 182 阅读 · 0 评论 -
树剖 学习笔记与例题与模板
首先就是7个树剖要用到的数组:fa[i]:i的父亲dep[i]:i的深度size[i]:以i为根的子树的大小son[i]:i的重儿子编号top[i]:i所在链的顶端节点编号dfn[i]:i的dfs序编号rnk[i]:dfs序中第i个枚举节点的编号显而易见,有rnk[dfn[i]]=i;什么花花绿绿的功能咱先不说,先把这7个数组求出来。方法是DFS*2;DFS1:求fa,dep,size,son.dep[1]=1;dfs1(1);void dfs1(int st){ son[s原创 2021-07-21 22:07:39 · 301 阅读 · 1 评论 -
树状数组 学习笔记
树状数组有两个低级模式,一个高级模式(万能)。详细模板低级模式一:区间查询+单点修改(相当于有了单点查询)初始化:add(i,x)单点修改:cin x,y add(x,y) 把编号为x的修改为y值。万能查询:cin x,y cout qu(y)-qu(x-1) 单点查询时x,y相等。低级模式二:单点查询+区间修改(相当于有了单点修改)初始化:y=0–> i 1-n add(i,x-y) y=x万能修改:cin x,y,z add(x,z) add(y+1,-原创 2021-07-16 20:53:45 · 1005 阅读 · 0 评论