博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杂七杂八的一些板子
阅读量:5342 次
发布时间:2019-06-15

本文共 3264 字,大约阅读时间需要 10 分钟。

高精乘低精

void mult(int x,int a[]){    int k=0;    for(int i=1;i<=a[0];i++)    {        int tmp=a[i]*x+k;        a[i]=tmp%10;        k=tmp/10;    }    while(k)a[++a[0]]=k%10,k/=10;}

线性筛素数

void getpri(){    for(int i=2;i<=10000;i++)    {        if(!vis[i])pri[++tot]=i;        for(int j=1;j<=tot;j++)        {            if(i*pri[j]>10000)break;            vis[i*pri[j]]=1;            if(i%pri[j]==0)break;        }    }}

比较高效的分解质因数

void getprime(){    for(int i=2;i<=2*n;i++)    {        if(!vis[i])pri[++tot]=i,res[i]=tot;        for(int j=1;j<=tot;j++)        {            if(i*pri[j]>2*n)break;            vis[i*pri[j]]=1;res[i*pri[j]]=j;            if(i%pri[j]==0)break;        }    }}void divi(int x,int val){    while(x!=1)bu[res[x]]+=val,x/=pri[res[x]];    }

高精减

void Minus(int a[],int b[]){    int j=1,x=0;    while(j<=a[0]||j<=b[0])    {        if(a[j]
1)k--; ans[0]=k;}

高精加

void add(int m[],int n[]){    int j=1,x=0;    while(j<=m[0]||j<=n[0])    {        c[j]=m[j]+n[j]+x;        x=c[j]/10;        c[j]%=10;        j++;    }    c[j]=x;    if(c[j]==0)j--;    for(int i=j;i>=1;i--)    cout<

高精乘

void dx(int m[],int n[]){    for(int i=1;i<=m[0];i++)    {        int x=0;        for(int j=1;j<=n[0];j++)        {            c[i+j-1]=m[i]*n[j]+x+c[i+j-1];            x=c[i+j-1]/10;            c[i+j-1]%=10;        }        c[i+n[0]]=x;    }    c[0]=m[0]+n[0];    while(c[c[0]]==0&&c[0]>1)c[0]--;    for(int i=c[0];i>=1;i--)cout<

 莫队

#include
#include
#include
#include
#include
using namespace std;const int N=50005;int n,m,k;int cnt[N],a[N],size,p,ans[N];struct query{ int l,r,id,bel;}q[N];int cmp(query x,query y){ return x.bel!=y.bel?x.l
y.r); }int read(){ int x=0;char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x;}int main(){ n=read();m=read();k=read(); size=(int)sqrt(n); for(int i=1;i<=n;i++) a[i]=read(); for(int i=1;i<=m;i++) q[i].l=read(),q[i].r=read(),q[i].id=i,q[i].bel=(q[i].l-1)/size+1; sort(q+1,q+m+1,cmp); /*for(int i=1;i<=m;i++) cout<
<<' '<
<<' '<
<<' '<
ql)l--,cnt[a[l]]++,p+=2*cnt[a[l]]-1; while(r
qr)cnt[a[r]]--,p-=2*cnt[a[r]]+1,r--; ans[q[i].id]=p; } for(int i=1;i<=m;i++) cout<
<

 

超级快读

const int L=1<<20|1;char buffer[L],*S,*T;#define getchar() ((S==T&&(T=(S=buffer)+fread(buffer,1,L,stdin),S==T))?EOF:*S++)

 cin优化(消费ooo

#include 
int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); return 0;}

 ST表

#include
#include
#include
using namespace std;const int N=100005;int n,m;int st[N][20],a[N];int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*f;}int lg[N]={-1};void ini(){ for(int i=1;i<=n;i++) st[i][0]=a[i],lg[i]=lg[i>>1]+1; for(int i=1;i<=lg[n];i++) for(int j=1;j+(1<
<=n;j++) st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);}int query(int l,int r){ int len=lg[r-l+1]; return max(st[l][len],st[r-(1<

 

转载于:https://www.cnblogs.com/Rorschach-XR/p/11222653.html

你可能感兴趣的文章
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Ubuntu13.04编译安装cmake2.8.12.2
查看>>
Oracle session相关数据字典(一)
查看>>
织梦文章内容提取第一张或者多张图片输出
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
降序排列
查看>>
异常图
查看>>
十一、类型转换
查看>>
面试内容,值得一看
查看>>
UILabel
查看>>
ITerm2下使用ssh访问Linux
查看>>
【热门技术】三种SEO方式
查看>>
[Hades_技术]哈迪斯初级技术应用
查看>>
Java复习-正则表达式
查看>>
Spring.net +NHibernate ?先搞定Common.Logging
查看>>
vue中计算属性,方法,侦听器
查看>>