pascal 解题模板(NOIP)

本文详细介绍了Pascal编程中用于解决算法竞赛问题的一些关键模板,包括树上最近公共祖先(LCA)、堆、快速乘法、快速加法、二分查找、扩展欧几里得算法、线段树、强连通分量、二分图最大匹配、SPFA最短路径算法、中国剩余定理、Catalan数和欧拉函数等。提供了相应的代码实现,帮助理解并运用这些算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:
1.LCA(树上倍增)
2.堆
3.快速乘
4.快速加
5.二分查找
6.拓展欧几里得算法(可求乘法逆元)
7.线段树(建树,lazy标记,修改修改区间值)
8.强连通(taijan)
9.二分图最大匹(匈牙利算法)
10.spfa
11.中国剩余定理
12.catalan数
13.欧拉函数
14.拓扑排序

                  1.LCA 裸代码,可直接套用

function lca(u,v:longint):longint;
var i:longint;
begin
if d[v]>d[u] then
begin
i:=u; u:=v; v:=i;
end;
i:=30;
while d[u]>d[v] do
begin
while d[v]>d[dp[u,i]] do dec(i);
u:=dp[u,i];
end;
if u=v then exit(u);
i:=30;
while i>=0 do
begin
while (i>=0) and (dp[u,i]=dp[v,i]) do dec(i);
if i>=0 then
begin
u:=dp[u,i];
v:=dp[v,i];
end;
end;
exit(f[u]);
end;

                   2.堆(以小根堆为例)

procedure put(x:longint);
var i,j:longint;
begin
inc(len);
a[len]:=x;
i:=len;
while (a[i div 2]>a[i]) and (i&g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值