zoukankan      html  css  js  c++  java
  • Can you answer these queries? HDU

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    ll a[N];
    int n,m;
    int op,l,r;
    struct node
    {
        ll l,r;
        ll sum;
    }tr[N*4];
    void build(int root,int l, int r)
    {
        tr[root]={l,r};
        tr[root].sum=0;
        if(l==r)
        {
            tr[root].sum=a[l];
            return;
        }
        int mid=l+r>>1;
        build(root<<1,l,mid);
        build(root<<1|1,mid+1,r);
        tr[root].sum=tr[root<<1].sum+tr[root<<1|1].sum;
    }
    void update(int root,int l,int r)
    {
        if(l>tr[root].r||tr[root].l>r)
            return;
        if (tr[root].sum==(tr[root].r-tr[root].l + 1))
            return;
        if (tr[root].l==tr[root].r)
        {
            tr[root].sum=sqrt(tr[root].sum);
            return;
        }
        int mid=tr[root].l+tr[root].r>>1;
        update(root<<1,l,r);
        update(root<<1|1,l,r);
        tr[root].sum=tr[root<<1].sum+tr[root<<1|1].sum;
    }
    ll Query(int root,int l,int r)
    {
        if (l>tr[root].r||tr[root].l>r)
            return 0;
        if (l<=tr[root].l&&tr[root].r<=r)
            return tr[root].sum;
        int mid=tr[root].l+tr[root].r>>1;
        ll res=0;
        res+=Query(root<<1,l,r);
        res+=Query(root<<1|1,l,r);
        return res;
    }
    int main()
    {
        int cnt=0;
        while(~scanf("%d",&n))
        {
            printf("Case #%d:
    ",++cnt);
            for (int i=1;i<=n;i++)
                scanf("%lld",&a[i]);
            scanf("%d",&m);
            build(1,1,n);
            while (m--)
            {
                scanf("%d%d%d",&op,&l,&r);
                if(l>r)
                    swap(l,r);
                if(op==0)
                    update(1,l,r);
                else
                    printf("%lld
    ",Query(1,l,r));
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    控制语句
    (小程序)接收用户键盘输入
    运算符
    java doc形成注释文档
    linux中rz、sz命令,zip、unzip命令,sqlite3基本操作
    hash应用-加随机盐保存密码
    非对称/对称加密算法,hash算法
    自签名的应用--数字货币
    HTTPS原理
    Django中app的model相互引用问题
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12293982.html
Copyright © 2011-2022 走看看