高精度:

重载运算符版:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NR=1e4;
char s[NR];
struct Bigint
{
int num[NR];
Bigint()
{
memset(num,,sizeof(num));
num[]=;
}
void read()
{
scanf("%s",s);
num[]=strlen(s);
for(int i=;i<=num[];i++)
num[i]=s[num[]-i]-'';
}
void print()
{
for(int i=num[];i>=;i--)
printf("%d",num[i]);
puts("");
}
Bigint operator + (const Bigint &B) const
{
Bigint c;
c.num[]=max(num[],B.num[]);
for(int i=;i<=c.num[];i++)
{
c.num[i]+=num[i]+B.num[i];
c.num[i+]+=c.num[i]/;
c.num[i]%=;
}
if(c.num[c.num[]+]>)
c.num[]++;
return c;
}
};
int main(void)
{
Bigint a,b,c;
a.read();
b.read();
c=a+b;
c.print();
return ;
}

普通高精度:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NR=1e3;
char s[NR+];
int a[NR+],b[NR+],c[NR+];
void read(int a[])
{
scanf("%s",s);
a[]=strlen(s);
for(int i=;i<=a[];i++)
a[i]=s[a[]-i]-'';
}
void print(int a[])
{
for(int i=a[];i>=;i--)
printf("%d",a[i]);
puts("");
}
void add(int a[],int b[],int c[])
{
c[]=max(a[],b[]);
for(int i=;i<=c[];i++)
{
c[i]+=a[i]+b[i];
c[i+]=c[i]/;
c[i]%=;
}
if(c[c[]+]>)
printf("%d",c[c[]]+);
}
int main()
{
read(a);
read(b);
add(a,b,c);
print(c);
return ;
}

快速幂:

#include<cstdio>
#include<algorithm>
using namespace std;
long long po(long long x,long long p,long long k)
{
if(p==)
return ;
if(p==)
return x;
int a=po(x,p/,k);
a%=k;
if(p%==)
return (a*a)%k;
return (a*a*x)%k;
}
int main(void)
{
long long x,p,k;
scanf("%lld%lld%lld",&x,&p,&k);
printf("%lld^%lld mod %lld=%lld\n",x,p,k,po(x,p,k)%k);
return ;
}

判断回文数:

#include<cstdio>
using namespace std;
int num[],len;
bool check(int x)
{
int tmp=;
while(x!=)
{
num[++tmp]=x%;
x/=;
len++;
}
for(int i=;i<=len/;i++)
if(num[i]!=num[len+-i])
return false;
return true;
}
int main()
{
int n;
scanf("%d",&n);
if(check(n)==true)
printf("YES\n");
else
printf("NO\n");
return ;
}

并查集:

#include<cstdio>
#include<algorithm>
using namespace std;
const int NR=1e5;
int n,m;
int bin[NR+],tot;
int anc(int x)
{
if(bin[x]==)
return x;
bin[x]=anc(bin[x]);
return bin[x];
}
void link(int u,int v)
{
u=anc(u);
v=anc(v);
if(u!=v)
{
bin[u]=v;
tot--;
}
}
struct road
{
int x,y,t;
void inp()
{
scanf("%d%d%d",&x,&y,&t);
}
friend bool operator < (road A,road B)
{
return A.t<B.t;
}
};
road s[NR+];
void inp()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
s[i].inp();
tot=n;
}
void ask(int u,int v)
{
if(anc(u)==anc(v))
printf("Yes\n");
else
printf("No\n");
}
void calc()
{
sort(s+,s+m+);
int i;
for(i=;i<=m;i++)
{
link(s[i].x,s[i].y);
if(tot==)
goto finish;
}
printf("-1\n");
return;
finish:
printf("%d\n",s[i].t);
}
int main(void)
{
inp();
calc();
return ;
}

归并排序:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int NR=5e5;
int n;
int a[NR+],tmp[NR+];
void marge(int l,int r,int mid)
{
int sum=r-l+,t=;
int disl=l,disr=mid+;
while(disl<=mid&&disr<=r)
{
if(a[disl]>a[disr])
{
t++;
tmp[t]=a[disr];
disr++;
}
else
{
t++;
tmp[t]=a[disl];
disl++;
}
}
while(disl<=mid)
{
t++;
tmp[t]=a[disl];
disl++;
}
while(disr<=r)
{
t++;
tmp[t]=a[disr];
disr++;
}
for(int i=;i<=sum;i++)
a[l+i-]=tmp[i];
return;
}
void cha(int l,int r)
{
if(l==r)
return;
int mid=(l+r)>>;
cha(l,mid);
cha(mid+,r);
marge(l,r,mid);
return;
}
int main(void)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
cha(,n);
for(int i=;i<=n;i++)
printf("%lld ",a[i]);
puts("");
return ;
}

进制转换:

#include<cstdio>
#include<algorithm>
using namespace std;
int len[],tmp=;
void change(int n,int a,int b)
{
int n_10=;
int fu=n;
while(fu)
{
n_10+=fu%*tmp;
tmp*=a;
fu/=;
}
fu=n_10;
tmp=;
while(fu)
{
len[++tmp]=fu%b;
fu/=b;
}
}
int main()
{
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
change(n,a,b);
for(int i=tmp;i>=;i--)
printf("%d",len[i]);
puts("");
return ;
}

逆元:

#include<cstdio>
#include<algorithm>
using namespace std;
int main(void)
{
int p;
scanf("%d",&p);
int inv[p+];
inv[]=;
for(int i=;i<=p-;i++)
inv[i]=(p-p/i)*inv[p%i]%p;
for(int i=;i<=p-;i++)
printf("%d\n",inv[i]);
return ;
}

分解质因数:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int p[];
int factor(int x,int p[])
{
int cnt=;
for(int i=;i*i<=x;i++)
while(x%i==)
{
p[++cnt]=i;
x/=i;
}
if(x>)
p[++cnt]=x;
return cnt;
}
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",factor(n,p));
return ;
}

二叉搜索树:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int NR=1e5;
struct note
{
int val,w;
int lc,rc;
}T[NR+];
int n,cnt,a[NR+];
void ins(int o,int v)
{
if(!T[o].val)
{
T[o].val=v;
T[o].w++;
return;
}
if(T[o].val==v)
{
T[o].val++;
return;
}
if(v<T[o].val)
{
if(!T[o].lc)
T[o].lc=++cnt;
ins(T[o].lc,v);
}
if(v>T[o].val)
{
if(!T[o].rc)
T[o].rc=++cnt;
ins(T[o].rc,v);
}
}
void dfs(int o)
{
if(!T[o].val)
return;
if(T[o].lc)
dfs(T[o].lc);
printf("%d ",T[o].val);
if(T[o].rc)
dfs(T[o].rc);
}
int main(void)
{
scanf("%d",&n);
cnt=;
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
ins(,a[i]);
dfs();
puts("");
return ;
}

线性筛:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void)
{
int n=;
bool flag[];
memset(flag,false,sizeof(flag));
for(int i=;i<=;i++)
if(flag[i]==false)
{
printf("%d\n",i);
for(int j=;i*j<=n;j++)
flag[i*j]=true;
}
return ;
}

裴蜀定理:

#include<cstdio>
#include<algorithm>
using namespace std;
#define pr pair<int,int>
#define x tmp.first;
#define y tmp.second;
pr exged(int a,int b)
{
if(b==)
return pr(,);
pr tmp=exged(b,a%b);
return pr(y,x-a/b*y);
}
int main(void)
{ return ;
}

哈希碰撞:

#include<cstdio>
#include<algorithm>
using namespace std;
struct brute
{
bool w[];
void ins(int x)
{
w[x]=;
}
void ask(int x)
{
printf("%d\n",w[x]);
}
}
#define ha 233333;
struct naive
{
bool w[ha+];
void ins(int x)
{
w[x%ha]=;
}
void ask(int x)
{
printf("%d\n",w[x%ha]);
}
};
/*naive B;
struct zip
{
vector<bool> w[ha+5];
void ins(int x)
{
w[x%ha]
}
};*/
int main(void)
{ return ;
}

测空间:

#include<cstdio>
#include<algorithm>
using namespace std;
int a[];
int main(void)
{
int sum=sizeof(a);
printf("%d\n",sum//);
return ;
}

一行gcd :

int gcd(int a,int b){  return b ? gcd(b,a%b) : a;}

线段树模板:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int NR=1e6;
unsigned ll n,m,a[NR+],ans[*NR+],tag[NR*+];
inline ll ls(ll x)
{
return x<<;
}
inline ll rs(ll x)
{
return x<<|;
}
void scan()
{
scanf("%lld%lld",&n,&m);
for(ll i=;i<=n;i++)
scanf("%lld",&a[i]);
}
inline void push_up(ll p)
{
ans[p]=ans[ls(p)]+ans[rs(p)];
}
void build(ll p,ll l,ll r)
{
tag[p]=;
if(l==r)
{
ans[p]=a[l];
return;
}
ll mid=(l+r)>>;
build(ls(p),l,mid);
build(rs(p),mid+,r);
push_up(p);
}
inline void f(ll p,ll l,ll r,ll k)
{
tag[p]=tag[p]+k;
ans[p]=ans[p]+k*(r-l+);
}
inline void push_down(ll p,ll l,ll r)
{
ll mid=(l+r)>>;
f(ls(p),l,mid,tag[p]);
f(rs(p),mid+,r,tag[p]);
tag[p]=;
}
inline void update(ll nl,ll nr,ll l,ll r,ll p,ll k)
{
if(nl<=l&&r<=nr)
{
ans[p]+=k*(r-l+);
tag[p]+=k;
return;
}
push_down(p,l,r);
ll mid=(l+r)>>;
if(nl<=mid)
update(nl,nr,l,mid,ls(p),k);
if(nr>mid)
update(nl,nr,mid+,r,rs(p),k);
push_up(p);
}
ll query(ll q_x,ll q_y,ll l,ll r,ll p)
{
ll res=;
if(q_x<=l&&q_y>=r)
return ans[p];
ll mid=(l+r)>>;
push_down(p,l,r);
if(q_x<=mid)
res+=query(q_x,q_y,l,mid,ls(p));
if(q_y>mid)
res+=query(q_x,q_y,mid+,r,rs(p));
return res;
}
int main(void)
{
ll a1,b,c,d,e,f;
scan();
build(,,n);
while(m--)
{
scanf("%lld",&a1);
switch(a1)
{
case :
{
scanf("%lld%lld%lld",&b,&c,&d);
update(b,c,,n,,d);
break;
}
case :
{
scanf("%lld%lld",&e,&f);
printf("%lld\n",query(e,f,,n,));
break;
}
}
}
return ;
}

C++各种模板的更多相关文章

  1. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  2. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  3. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  6. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  7. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  8. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  10. DDD领域驱动设计 - 设计文档模板

    设计文档模板: 系统背景和定位 业务需求描述 系统用例图 关键业务流程图 领域语言整理,主要是整理领域中的各种术语的定义,名词解释 领域划分(分析出子域.核心域.支撑域) 每个子域的领域模型设计(实体 ...

随机推荐

  1. java集合对象区别一

    Vector和ArrayList 1.vector是线程同步的,所以他也是线程安全的,而ArrayList是线程异步的,是不安全的.如果不考虑到线程的安全因素,一般用ArrayList效率较高. 2. ...

  2. 干货分享:Essay写作收集论据的三个方法

    在很多时候,中国留学生写出的Essay在西方学术界看来是存在plagiarism的情况.并不是说咱们写的所有东西都是抄袭,而是思维逻辑和利用证据的方式与西方权威的academic writing不同. ...

  3. POJ 3258:River Hopscotch 二分的好想法

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9326   Accepted: 4016 D ...

  4. 使用idea断点调试时出现no executable code found at line问题

    问题描述 今天突然碰到了这样的一个问题: 使用断点调试时,断点的地方出现了一个叉号,而不是对勾,这就让我非常无奈了. 调了一天,终于把这个问题解决了,还是要记录一下的. 问题情况如下: 除了这里,de ...

  5. C#调用C++系列一:简单传值

    因为去实习的时候有一个小任务是C#想调用C++ opencv实现的一些处理,那我主要的想法就是将C++实现的OpenCV处理封装成dll库供C#调用,这里面还会涉及到一些托管和非托管的概念,我暂时的做 ...

  6. 分布式CAP定理(转)

    在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...

  7. Java学习——代理模式

    Java中的三种代理模式 一,什么是代理模式? 代理模式是一种设计模式,简单的来说就是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing ...

  8. TCP连接为什么三次握手四次挥手

    前几天面试某电商被问住了,问的很细,我就说了说连接过程,必然凉凉.在csdn上找了一篇很详细的博客.https://blog.csdn.net/hyg0811/article/details/1023 ...

  9. Python—异步任务队列Celery简单使用

    一.Celery简介 Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具.它是一个任务队列,专注于实时处理,同时还支持任务调度. 中间人boker: ...

  10. Python 安装modules问题及import问题

    >>>modules问题 在学习Python的数据可视化时,安装了matplotlib,在安装完成后还特意在终端测试了一下,结果显示能正常import 但是在sublime Text ...