首页 > 其他分享 >板子

板子

时间:2024-12-29 23:52:22浏览次数:1  
标签:return int void 板子 fa inline dis

板子合集

头文件

//5oiR5piv6YKj57u06I6x54m555qE54uX
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=-1;
constexpr int inf=20241218;
stack<char> t;
int main()
{
//	freopen("neuvillette.in","r",stdin);
//	freopen("neuvillette.out","w",stdout);

	return 0;
}

IO

template <typename T>
inline void read(T &x){x=0;char ch=getchar();bool f=0;while(ch<'0'||ch>'9'){if(ch=='-')f=1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();if(f)x=-x;}
template <typename T,typename ...Args>
inline void read(T &tmp,Args &...tmps){read(tmp);read(tmps...);}
template <typename T,typename ...Args>
inline void readn(T a[],int _){for(int i=1;i<=_;i++) read(a[i]);}
template <typename T>
inline void write(T x){if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+48);}
template <typename T,typename ...Args>
inline void write(T tmp,Args ...tmps){write(tmp);putchar(' ');write(tmps...);}
template <typename ...Args>
inline void writeln(Args ...tmps){write(tmps...);putchar('\n');}

gcd(得特判 $0$)

inline int gcd(int a,int b)
{
	while(b^=a^=b^=a%=b);
	return a;
}

质数筛

bool vis[N];
vector<int> p;
inline void sieve(int n)
{
	int cnt=1;
	vis[1]=1;
	for(int i=2;i<=n;i++)
	{
		if(!vis[i])
		{
			cnt++;
			p.push_back(i);
		}
		for(int j=0;j<cnt;j++)
		{
			if(1ll*i*p[j]>n) break;
			vis[i*p[j]]=1;
			if(i%p[j]==0) break;
		}
	}
}

最小生成树

int p[N];
int find(int u){return p[u]==u?u:p[u]=find(p[u]);}
vector<edge> e;
int kruskal()
{
    sort(e.begin(),e.end(),[&](edge A,edge B){return A.w<B.w;});
    int ans=0,cnt=0;
    for(edge E:e)
    {
        int pu=find(E.u),pv=find(E.v);
        if(pu!=pv) p[pu]=pv,ans+=E.w,cnt++;
    }
    return cnt==n-1?ans:-1;
}

Dijkstra

typedef pair<int,int> pii;
inline void dijkstra()
{
    memset(dis,0x3f,sizeof dis);
    dis[s]=0;
    priority_queue<pii> q;
    q.push({0,s});
    while(!q.empty())
    {
        int u=q.top().second;
        q.pop();
        if(!vis[u])
        {
            vis[u]=1;
            for(int i=h[u];i;i=e[i].nxt)
            {
                int v=e[i].to,w=e[i].w;
                if(dis[v]>dis[u]+w)
                {
                    dis[v]=dis[u]+w;
                    q.push({-dis[v],v});
                }
            }
        }
    }
}

线段树

#define ls (u<<1)
#define rs (u<<1|1)
struct node{int l,r;ll sum,lazy;}tr[N<<2];
int n,m;
int a[N];
inline void up(int u)
{
    tr[u].sum=tr[ls].sum+tr[rs].sum;
}
inline void down(int u)
{
    if(tr[u].lazy)
    {
        tr[ls].sum+=(tr[ls].r-tr[ls].l+1)*tr[u].lazy;
        tr[rs].sum+=(tr[rs].r-tr[rs].l+1)*tr[u].lazy;
        tr[ls].lazy+=tr[u].lazy;
        tr[rs].lazy+=tr[u].lazy;
        tr[u].lazy=0;
    }
}
void B(int u,int l,int r)
{
    tr[u]={l,r,a[l],0};
    if(l==r) return;
    int mid=(l+r)>>1;
    B(ls,l,mid);
    B(rs,mid+1,r);
    up(u);
}
void M(int u,int l,int r,ll k)
{
    if(l<=tr[u].l&&tr[u].r<=r)
    {
        tr[u].sum+=(tr[u].r-tr[u].l+1)*k;
        tr[u].lazy+=k;
        return;
    }
    int mid=tr[u].l+tr[u].r>>1;
    down(u);
    if(l<=mid) M(ls,l,r,k);
    if(r>mid) M(rs,l,r,k);
    up(u);
}
ll Q(int u,int l,int r)
{
    if(l<=tr[u].l&&tr[u].r<=r) return tr[u].sum;
    int mid=tr[u].l+tr[u].r>>1;
    down(u);
    ll s=0;
    if(l<=mid) s=Q(ls,l,r);
    if(r>mid) s+=Q(rs,l,r);
    return s;
}

LCA

int dep[N],fa[N][20];
void dfs(int u,int p)
{
	dep[u]=dep[p]+1;
	fa[u][0]=p;
	for(int i=1;i<19;i++) fa[u][i]=fa[fa[u][i-1]][i-1];
	for(int i=h[u];i;i=e[i].nxt) if(e[i].to!=p) dfs(e[i].to,u);
}
int lca(int u,int v)
{
	if(dep[u]<dep[v]) swap(u,v);
	for(int i=19;i>=0;i--) if(dep[fa[u][i]]>=dep[v]) u=fa[u][i];
	if(u==v) return v;
	for(int i=19;i>=0;i--)
	if(fa[u][i]!=fa[v][i]) u=fa[u][i],v=fa[v][i];
	return fa[u][0];
}

标签:return,int,void,板子,fa,inline,dis
From: https://www.cnblogs.com/wwwidk1234/p/18639818

相关文章

  • 快速幂板子
    目录前言板子结语前言        无板子        注:如果不取模,就直接去掉mod,计算式中的mod也去掉longlongpowerfast(){longlonga,b,mod=1000000007,result=1;cin>>a>>b;a=a%mod;while(b>0){if(b%2!=0){r......
  • 板子
    算法枚举DP,贪心,二分核心:找规律,观察性质套DS:扫描线,线段树,BIT,平衡树?堆,单调栈/队列技巧枚举正难则反,根号分治,前后考虑,拆贡献,转化字符串KMP#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#definepiipair<int,int>#definefifirst#define......
  • 板子复习
    其余1.倍增可以快速求静态区间信息。2.区间操作的数据结构考虑线段树,要思考如何优化信息3.有点思路时先想暴力,然后一点点优化复杂度,相信自己场上除了水题外是有时间也有能力再做出来一道的。4.想好思路时先打爆暴力,可以让思路在脑子里在思考一下,不会写一半乱了,正解错的时候可......
  • 区间dp板子
    比较简单的dp,但是建模可能会比较困难。以P1775石子合并(弱化版)为例(https://www.luogu.com.cn/problem/P1775)思路:要求1-n的石子合并的代价,可以看成小的区间问题,化为1-k+k-n的两个区间。然后就有递推式子:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+w[j]-w[i-1]。编......
  • 板子大全
    数据结构01trieconstintM=30;constintN=2e5+5;intn,a[N];structTrie{ intt[N*M][2],ed[N*M],dp[N*M],tot; inlinevoidclear(void){ for(inti=0;i<=tot;i++)t[i][0]=t[i][1]=ed[i]=dp[i]=0; tot=0; } Trie(void......
  • PCB双面制造解析,你的板子是这么做出来的
    图形电镀工艺是制造高质量电路板的关键步骤。这一过程不仅需要精确的控制,还涉及到多个复杂的化学和物理操作。一、图形电镀工艺流程首先,让我们从最基本的步骤开始:电路板的制作始于一块覆有铜箔的板材。接下来,根据设计要求,板材会被裁剪并冲钻出基准孔,以确保后续工序的精确......
  • PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤
    在PBootCMS中,后台操作涉及多个配置项,包括更换模板路径、配置后台模板子目录、配置后台黑名单和白名单以及敏感词过滤。下面是详细的步骤和说明。1.更换模板路径步骤进入站点信息页面:登录PBootCMS后台。导航至 【基础内容】-【站点信息】-【站点模板】。选择模板......
  • 【AD那些事 7 】板子完成!铺铜后!检查的!注意事项! !!板子连线过程中注意事项!!!
    板子连线过程中注意事项:第一,不能距离边缘过近第二,走线不能过长,保证焊盘焊盘间距离短(拒绝太多折线连接)第三,在布线途中旋转器件,确保连接第四,确保GND线可以互相连通如果未连接地线,通过铺铜连接地线时注意事项:1.这样连接是锐角,不能哦  (同一层线不能锐角)   2.铺......
  • AD设计板子尺寸等,设计PCB的一些个人总结技巧
    板框大小评估第一步:首先先左键按紧,框选好你的元件第二步:进行板框大小评估   工具 - 器件摆放 - 在矩形区域摆放之后通过鼠标框选矩形区域,元件会自动按照框选的范围进行摆放。会摆出一个大概的位置板框绘制 第一步:点击Mechanical1,切换到机械层。(记得先把shee......
  • 一些板子
    平衡树系列splay点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=2e6+10;intsiz[N],cnt[N],tot,fa[N],ch[N][2],val[N],root,n;inlineintread(){ registerintans=0;registercharch=getchar();registerboolflag=0; while(ch<'0&#......