- 博客(7)
- 收藏
- 关注
原创 倍增求LCA(模版&详解)
i--)//先让x,y跳到同一层,注意循环是从大到小,这样效率更高 ,不会跳过了再往回跳。// 将之前存储的父节点信息以及父节点之前的信息传递到该节点。=f[y][i])//若两值不同则它们的父节点即为最近公共祖先 ,因为是从上往下。e=nxt[e])//邻接表存储方式,更新该节点的子节点。void deal(int u,int fa)//可以理解为该节点与其父节点。int lca(int x,int y)//x,y表示查询点的地址。f[v][0]=u;
2024-08-15 17:07:46
637
原创 trie字典树
int x=0;int tot=0;int xv=0;int u=1;i<len;++i)if(!ch[u][c])j>='9'-'a';j--)if(!u=ch[u][c];bo[u]=true;=1)x=1;int main()int t;cin>>t;i<=t;i++)int n;cin>>n;x=0;j<=n;j++)string y;cin>>y;
2024-08-12 20:33:48
359
原创 最小生成树,1348:【例4-9】城市公交网建设问题,1349:【例4-10】最优布线问题,1351:【例4-12】家谱树
有一张城市地图,图中的顶点为城市,无向边代表两个城市间的连通关系,边上的权为在这两个城市之间修建高速公路的造价,研究后发现,这个地图有一个特点,即任一对城市都是连通的。当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节省费用,我们采用数据的间接传输手段,即一台计算机可以间接的通过若干台计算机(作为中转)来实现与另一台计算机的连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。现在由你负责连接这些计算机,任务是使任意两台计算机都连通(不管是直接的或间接的)。
2024-08-11 21:23:19
468
原创 RMQ问题ST算法,一本通1541.例1.数列区间最大值(模版题)
f数组运用了动态规划的思想,即区间最大值为左右两区间最大值的较大值得状态转移方程: f[i][j]=max(f[i][j-1],f[i+(1<<j-1)][j-1]) (表示a[i]到a[i+2^j-1]内的最大值)log[i]=log[i>>1]+1;log数组 通过log[i]=log[i>>1]+1计算(通过简单的对数计算即可证该式 )for(int i=1;i++)//预处理log值。ST算法相对于线段树而言更易实现,且在极值问题上效率更高。预处理先处理log数组的值(1-n),再处理f数组。
2024-08-10 21:17:53
328
原创 树状数组单点修改区间查询,区间修改单点查询,一本通1547区间和(树状数组做法)
/利用差分数列对于树状数组进行区间修改单点查询。//一本通1547区间和树状数组做法。//树状数组单点修改区间查询。
2024-08-09 09:54:45
337
1
原创 线段树标记永久化(区间修改区间查询模板)
void modify(int k,int l,int r,int x,int y,int v)//当前编号,与范围,需要修改的区间和值。int query(int k,int l,int r,int x,int y)//查询。
2024-08-09 09:51:02
387
原创 线段树模版(单点修改,区间查询),例1.1547区间和
void change(int k,int l,int r,int x,int v)//x为修改值的位置,v为要修改为的值。void build(int k,int l,int r)//k为当前节点,l,r为当前节点所代表的区间。
2024-08-09 09:48:03
817
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅