常用模板:

数学:

1. 组合数

组合数
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e3+10,mod=998244353;
ll n,a[N],jc[N],dp[N],ans;
void init(){
jc[0]=1;
for(int i=1;i<N;i++) jc[i]=jc[i-1]*i%mod;
}
ll ksm(ll a,ll b){
ll ct=1;
while(b){
if(b&1) ct=ct*a%mod;
b>>=1,a=a*a%mod;
}
return ct;
}
ll C(ll n,ll m){
return jc[n]*ksm(jc[n-m],mod-2)%mod*ksm(jc[m],mod-2)%mod;
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n;init();
for(int i=1;i<=n;i++) cin>>a[i]; return 0;
}

2. 矩阵

矩阵
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
const ll N=110;
ll n,k;
struct Fbn{
ll a[N][N]={};
Fbn operator*(const Fbn &b){
Fbn s;
for(ll l=1;l<=n;l++)
for(ll i=1;i<=n;i++)
for(ll j=1;j<=n;j++)
s.a[i][j]=(s.a[i][j]+a[i][l]*b.a[l][j]%mod)%mod;
return s;
}
}ans,base;
ll ksm(ll p){
while(p){
if(p&1) ans=ans*base;
base=base*base;
p>>=1;
}
return 0;
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>k;
for(ll i=1;i<=n;i++)
for(ll j=1;j<=n;j++)
cin>>base.a[i][j];
for(ll i=1;i<=n;i++) ans.a[i][i]=1;
ksm(k);
for(ll i=1;i<=n;i++){
for(ll j=1;j<=n;j++)
cout<<ans.a[i][j]<<" ";
cout<<"\n";
}
return 0;
}

3. 逆元

逆元
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=3e6+10;
ll n,p,dp[N];
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>p;
dp[1]=1;
for(ll i=2;i<=n;i++)
dp[i]=(p-p/i)*dp[p%i]%p;
for(ll i=1;i<=n;i++)
cout<<dp[i]<<"\n";
return 0;
}

数据结构

1. 线段树

线段树
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e5+10;
ll b,p,q,k,n,m,t[N*4],a[N],lazy[N*4];
void build(ll rt,ll l,ll r){
if(l==r){t[rt]=a[l];return;}
ll mid=l+r>>1;
build(rt<<1,l,mid);
build((rt<<1)+1,mid+1,r);
t[rt]=t[rt<<1]+t[(rt<<1)+1];
}
void fun(ll rt,ll l,ll r,ll v){
t[rt]+=(r-l+1)*v;
lazy[rt]+=v;
}
void pushdown(ll rt,ll l,ll r){
ll mid=l+r>>1;
fun(rt<<1,l,mid,lazy[rt]);
fun((rt<<1)+1,mid+1,r,lazy[rt]);
lazy[rt]=0;
}
void update(ll rt,ll l,ll r,ll rl,ll rr,ll k){
if(r<rl||rr<l) return;
if(l>=rl&&rr>=r){fun(rt,l,r,k);return;}
pushdown(rt,l,r);
ll mid=l+r>>1;
update(rt<<1,l,mid,rl,rr,k);
update((rt<<1)+1,mid+1,r,rl,rr,k);
t[rt]=t[rt<<1]+t[(rt<<1)+1];
}
ll query(ll rt,ll l,ll r,ll rl,ll rr){
if(r<rl||rr<l) return 0;
if(l>=rl&&rr>=r) return t[rt];
pushdown(rt,l,r);
ll mid=l+r>>1;
return query(rt<<1,l,mid,rl,rr)+query((rt<<1)+1,mid+1,r,rl,rr);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n); }

2. 树状数组(青春版)

树状数组(青春版)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lowbit(x) (x)&(-(x))
const ll N=5e5+10;
ll n,m,l,x,y,s[N],a;
void xg(ll x,ll k){
for(int i=x;i<=n;i+=lowbit(i)) s[i]+=k;
}
ll sum(ll x){
ll ct=0;
for(int i=x;i;i-=lowbit(i)) ct+=s[i];
return ct;
}
ll getsum(ll l,ll r){
return sum(r)-sum(l-1);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a,xg(i,a);
while(m--){
cin>>l>>x>>y;
if(l==1){
xg(x,y);
}else{
cout<<getsum(x,y)<<"\n";
}
}
return 0;
}

3. 树状数组

树状数组
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lowbit(x) ((x)&(-(x)))
const ll N=5e5+10;
ll n,m,l,x,y,k,s[N],s2[N],c[N],a[N];
void xg(ll s[],ll x,ll k){
for(int i=x;i<=n;i+=lowbit(i)) s[i]+=k;
}
void qxg(ll x,ll y,ll k){
xg(s,x,k);
xg(s,y+1,-k);
xg(s2,x,x*k);
xg(s2,y+1,-(y+1)*k);
}
ll sum(ll s[],ll x){
ll ct=0;
for(int i=x;i;i-=lowbit(i)) ct+=s[i];
return ct;
}
ll getsum(ll l,ll r){
return (r+1)*sum(s,r)-sum(s2,r)-l*sum(s,l-1)+sum(s2,l-1);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
c[i]=a[i]-a[i-1];
s[i]+=c[i];
s2[i]+=i*c[i];
if(i+lowbit(i)<=n) s[i+lowbit(i)]+=s[i],s2[i+lowbit(i)]+=s2[i];
}
while(m--){
cin>>l>>x;
if(l==1){
cin>>y>>k;
qxg(x,y,k);
}else{
cout<<getsum(x,x)<<"\n";
}
}
return 0;
}

图论

1. dijkstra

dijkstra
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e5+10,M=2e5+10,inf=(1ll<<31)-1;
ll n,m,s,dist[N],x,y,v;
vector<pair<ll,ll> > e[M];
set<pair<ll,ll> > q;
void dijkstra(ll s){
q.clear();
for(int i=1;i<=n;i++) dist[i]=inf;
dist[s]=0;
for(int i=1;i<=n;i++) q.insert({dist[i],i});
while(!q.empty()){
ll x=q.begin()->second;
q.erase(q.begin());
if(dist[x]==inf) break;
for(auto y:e[x]){
if(dist[x]+y.second<dist[y.first]){
q.erase({dist[y.first],y.first});
dist[y.first]=dist[x]+y.second;
q.insert({dist[y.first],y.first});
}
}
}
for(int i=1;i<=n;i++)
cout<<dist[i]<<" ";
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
cin>>x>>y>>v;
e[x].push_back({y,v});
}
dijkstra(s);
return 0;
}

2. lca

lca
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=5e5+10;
ll n,a,b,s,m,l,ans,tot,f[N][55],h[N],de[N],r;
struct P{
ll a,n;
}d[N*2];
void dfs(ll now,ll fa){
f[now][0]=fa,de[now]=de[fa]+1;
for(int i=1;i<=20;i++)
f[now][i]=f[f[now][i-1]][i-1];
for(int i=h[now];i!=0;i=d[i].n)
if(d[i].a!=fa)
dfs(d[i].a,now);
}
ll lca(ll x,ll y){
if(de[x]>de[y]) x^=y^=x^=y;
for(int i=20;i>=0;i--)
if(de[f[y][i]]>=de[x])
y=f[y][i];
if(x==y) return x;
for(int i=20;i>=0;i--)
if(f[x][i]!=f[y][i])
x=f[x][i],y=f[y][i];
return f[x][0];
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m>>s;
for(int i=1;i<n;i++){
cin>>a>>b;
d[++tot].a=b,d[tot].n=h[a],h[a]=tot;
d[++tot].a=a,d[tot].n=h[b],h[b]=tot;
}
dfs(s,0);
while(m--){
cin>>l>>r;
cout<<lca(l,r)<<"\n";
}
return 0;
}

C++常用模板的更多相关文章

  1. NDK(10)Android.mk各属性简介,Android.mk 常用模板

    参考 : http://blog.csdn.net/hudashi/article/details/7059006 本文内容: Android.mk简介, 各属性表, 常用Android.mk模板 1 ...

  2. IDEA学习——模板及其常用模板

    模板及其常用模板 (1)psvm (2)sout sout / soutp / soutv / 变量.sout (3)fori iter增强for循环 itar普通for循环 (4)list.for ...

  3. Vue常用模板语法

    常用模板语法   本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只 ...

  4. html5常用模板下载网站

    html5常用模板下载网站 开创者素材.站长素材.模板之家 推荐葡萄家园素材网,他们网页模板栏目有个HTML模板,很多静态源码.应该是你所需要的. html静态页面模板 还是服饰素材啊 朋友 设计云 ...

  5. NDK(10)Android.mk各属性简介,Android.mk 常用模板--未完

    参考 : http://blog.csdn.net/hudashi/article/details/7059006 1. Android.mk简介 Android.mk文件是GNU Makefile的 ...

  6. CodeSmith 简单使用和常用模板

    1.简介 CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET的语法来生成任意类型的代码或文本. 2.软件布局 整体布局和visual studio系列相似,用过VS开发对此 ...

  7. WordPress主题模板层次和常用模板函数

    首页: home.php index.php 文章页: single-{post_type}.php – 如果文章类型是videos(即视频),WordPress就会去查找single-videos. ...

  8. hdu1251+字典树常用模板

    这里只简单给出几个常用的字典树的模板,要看具体介绍的请看:传送门 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现) ...

  9. spring boot ----> 常用模板freemarker和thymeleaf

    ===========================freemarker=================================== freemarker 官网:https://freem ...

  10. WDA基础十三:常用模板管理

    常用的模板一般是SMW0和OAOR,根据不同需求来的. WAD有个不好的地方就是不支持GUI上的OLE和DOI,所以需要做转换,下面是常用的方式: FUNCTION ZCRM_DOWNLOAD_TEM ...

随机推荐

  1. 力扣512(MySQL)-游戏玩法分析Ⅱ(简单)

    题目: 需求:请编写一个 SQL 查询,描述每位玩家首次登陆的设备名称 查询结果格式在以下示例中: 解题思路: 方法一:使用dense_rank() over(partition by ...orde ...

  2. iLogtail开源之路

    简介: 2022年6月底,阿里云iLogtail代码完整开源,正式发布了完整功能的iLogtail社区版.iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团.蚂蚁集团以及众 ...

  3. Serverless 极致弹性解构在线游戏行业痛点

    简介: 本文将通过剖析一个个具体的场景案例,以期望给相关的游戏开发同学带来共鸣,同时也希望能给非游戏行业的同学带来一些启发. 一.前言 1. 游戏客户上云关注点 游戏行业是一个富有创意又竞争激烈的市场 ...

  4. 配置审计(Config)配合开启OSS防盗链功能

    简介: 本文作者:紫极zj 本文将主要介绍利用[配置审计]功能,如何快速发现企业上云过程中,针对未配置防盗链的 OSS Bucket 定位及修复案例. 前言 配置审计(Config)将您分散在各地域的 ...

  5. 复杂推理模型从服务器移植到Web浏览器的理论和实战

    ​简介: 随着机器学习的应用面越来越广,能在浏览器中跑模型推理的Javascript框架引擎也越来越多了.在项目中,前端同学可能会找到一些跑在服务端的python算法模型,很想将其直接集成到自己的代码 ...

  6. [Roblox] 从障碍跑入门构建基础平台游戏_罗布乐思

      对于障碍跑来说,底板部分是可以不需要的 这样掉下障碍物就结束游戏,Baseplate 可以在右侧资源管理器 选中后Delete. SpawnLocation 标记玩家在游戏开始时或重新开始后在世界 ...

  7. k8s对接Ceph实现持久化存储(16)

    一.Ceph简介 官网:https://ceph.com/en/ https://docs.ceph.com/en/latest/start/intro/ ceph 是一种开源的分布式的存储系统 包含 ...

  8. K8s控制器(8)---Deployment

    一.Deployment控制器概念.原理解读 1.1 Deployment概述 # Deployment官方文档 https://kubernetes.io/docs/concepts/workloa ...

  9. 三、Prophecis 一站式云原生机器学习平台

    Prophecis 是微众银行自研大数据平台套件 WeDataSphere 的核心应用工具之一,为用户提供了全栈的机器学习应用开发与部署解决方案.作为WeDataSphere 功能工具应用系统,Pro ...

  10. Linux curl命令使用代理、以及代理种类介绍

    Linux curl命令使用代理.以及代理种类介绍 https://www.cnblogs.com/panxuejun/p/10574038.html 测试代理的方法: curl -x ip:port ...