码迷,mamicode.com
首页 > 其他好文 > 详细

题解 a+b问题

时间:2019-12-23 13:00:28      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:printf   pre   问题   fill   tchar   超过   png   +=   std   

题目:输入两个不超过10000的正整数,输出这两个数的和

题解:

前方高能

一道线段树模板题~

上代码:

#include<bits/stdc++.h>
using namespace std;
#define N 10000
struct Tree {int l,r,len;}a[N<<2+10];
int b[N<<2+10],num[N+10];
void Build(int l,int r,int s)
{
    a[s].l=l;
    a[s].r=r;
    a[s].len=r-l+1;
    if(l==r)
    {
        b[s]=num[l];
        return;
    }
    int mid=(r+l)>>1;
    Build(l,mid,s<<1);
    Build(mid+1,r,(s<<1)|1);
    b[s]=b[s<<1]+b[(s<<1)|1];
}
int query(int l,int r,int s)
{
    if(a[s].l>=l&&a[s].r<=r) return b[s];
    int ans=0;
    if(a[s<<1].r>=l) ans+=query(l,r,s<<1);
    if(a[(s<<1)|1].l<=r) ans+=query(l,r,(s<<1)|1);
    return ans;
}
inline 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<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}
int main()
{
    int n=Read(),m=Read();
    int maxn=n>m?n:m;
    fill(num+1,num+maxn+1,1);
    Build(1,maxn,1);
    printf("%d",query(1,n,1)+query(1,m,1));
    return 0;
}

but...

技术图片

题解 a+b问题

标签:printf   pre   问题   fill   tchar   超过   png   +=   std   

原文地址:https://www.cnblogs.com/juruo-zzt/p/12083018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!