常用模板___1
来源:互联网 发布:vue.js 格式化数字 编辑:程序博客网 时间:2024/05/21 14:48
//读优——————————————————————————————————————————————————————int read(){ char c;while(c=getchar(),(c<'0'||c>'9')&&c!='-');int x=0,y=1; if(c=='-') y=-1;else x=c-'0'; while(c=getchar(),c>='0'&&c<='9') x=x*10+c-'0'; return x*y;}//floyed弗洛伊德 ————————————————————————————————————————————————-for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) if(i!=k&&f[i][k]!=maxn) for(int j=1;j<=n;j++) if(i!=j&&j!=k&&f[k][j]!=maxn) f[i][j]=max(f[i][j],f[i][k]+f[k][j]);//kruskal克鲁斯卡尔————————————————————————————————————————————————for(int i=1;i<=m;i++){ if(find(x)!=find(y)){ unionn(x,y);k++; } if(k==n-1) break;} //union_find_set并查集———————————————————————————————————————————————/*getfather*/ int find(int x){ if(fa[x]!=x) fa[x]=find(fa[x]); return fa[x];} /*union*/int unionn(int x,int y){ x=find(x);y=find(y); if(x>y) fa[x]=y; else fa[y]=x;}//Seg_Tree线段树——————————————————————————————————————————————————————/*up向上更新*/void up(int node){sum[node]=sum[node<<1]+sum[(node<<1)+1];}/*down下推标记*/void down(int node,int l_L,int l_R){ if(add[node]){ add[node<<1]+=add[node]; add[(node<<1)+1]+=add[node]; sum[node<<1]+=l_L*add[node]; sum[(node<<1)+1]+=l_R*add[node]; add[node]=0; }} /*build建树*/void build(int node,int l,int r){ if(l==r){ sum[node]=f[l]; return; } int mid=(l+r)>>1; build(node<<1,l,mid); build((node<<1)+1,mid+1,r); up(node);} /*点修改updateONE*/void updateONE(int node,int l,int r,int p,int ad){ if(l==r){ sum[node]+=ad; return; } int mid=(l+r)>>1; if(p<=mid) updateONE(node<<1,l,mid,p,ad); else updateONE((node<<1)+1,mid+1,r,p,ad); up(node);}/*区间修改updateMORE*/void updateMORE(int node,int l,int r,int LS,int RS,int ad){ if(LS<=l&&r<=RS){ sum[node]+=(r-l+1)*ad; add[node]+=add; return; } int mid=(l+r)>>1; down(node,mid-l+1,r-mid); if(LS<=mid) updateMORE(node<<1,l,mid,LS,RS,ad); if(RS>=mid+1) updateMORE((node<<1)+1,mid+1,r,LS,RS,ad); up(node);} /*区间查询query*/void query(int node,int l,int r,int LS,int RS){ if(LS<=l&&r<=RS){ return sum[node]; } int mid=(l+r)>>1; down(node,mid-l+1,r-mid); int ans=0; if(LS<=mid) ans+=query(node<<1,l,mid,LS,RS); if(RS>=mid+1) ans+=query((node<<1)+1,mid+1,r,LS,RS); return ans;}
阅读全文
0 0
- 常用模板___1
- 面试小算法___1
- 图像分割___1
- 图像分割___1
- 常用模板
- Objective-C编码规范(格式缩进)___1
- 第一行代码读书笔记___1-2章
- 常用宏、模板
- 常用PHP模板大全
- DedeCMS模板常用标签
- Magento 常用模板
- Ant常用模板(转)
- Hibernate常用代码模板
- 二分法常用模板
- 常用sql脚本模板
- 数论所以常用模板
- 常用driver模板
- shopex常用模板
- Vim 配置详解
- 个人的java面试题整理
- leetcode 7月26日 非作弊刷题
- S19文件格式简述
- 数据库——(13)事务
- 常用模板___1
- 缺少jinja2
- 前端影响性能的细节
- 一个mybatis配置文件的例子
- JSP 表达式
- 剑指Offer——(41)和为S的两个数字
- js中的function(){}不好使
- XZ_iOS之UIColor的RGB数值转换方法
- JAVA 图片工具类 包含图片切割,水印