• hdu4027线段树


    https://vjudge.net/contest/66989#problem/H

    此题真是坑到爆!!说好的四舍五入害我改了一个多小时,不用四舍五入!!有好几个坑点,注意要交换l,r的位置,还有输出格式问题

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define ll long long
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    const int maxn=100010;
    ll value[maxn<<2];
    void pushup(int rt)//pushup应该随题目变化情况改变而改变
    {
        value[rt]=value[rt<<1]+value[rt<<1|1];
    }
    void btree(int l,int r,int rt)
    {
        if(l==r)
        {
            scanf("%lld",&value[rt]);
            return ;
        }
        int m=(l+r)>>1;
        btree(ls);
        btree(rs);
        pushup(rt);
    }
    void update(int L,int R,int l,int r,int rt)
    {
        if(value[rt]==r-l+1)return;//没有这句就会超时
        if(l==r)
        {
            value[rt]=(ll)(sqrt(value[rt]));//不四舍五入
            return;
        }
        int m=(l+r)>>1;
        if(L<=m)update(L,R,ls);
        if(R>m)update(L,R,rs);
        pushup(rt);
    }
    ll query(int L,int R,int l,int r,int rt)
    {
        if(L<=l&&r<=R)return value[rt];
        int m=(l+r)>>1;
        ll ans=0;
        if(L<=m)ans+=query(L,R,ls);
        if(R>m)ans+=query(L,R,rs);
        return ans;
    }
    int main()
    {
        int n,m,cnt=0;
        while(~scanf("%d",&n)){
            printf("Case #%d:
    ",++cnt);
            btree(1,n,1);
            scanf("%d",&m);
            while(m--){
                int t,l,r;
                scanf("%d%d%d",&t,&l,&r);
                if(l>r)swap(l,r);//这一点也是容易被坑的!!
                if(t==0)update(l,r,1,n,1);
                if(t==1)printf("%lld
    ",query(l,r,1,n,1));
            }
            printf("
    ");
        }
        return 0;
    }
    /*
    10
    1 2 3 4 5 6 7 8 9 10
    5
    0 1 10
    1 1 10
    1 1 5
    0 5 8
    1 4 8
    */
  • 相关阅读:
    ReportingServices报表管理器实现订阅
    sharepoint部署
    在sharepoint工程中添加引用
    asp:DropDownList选择事件出错
    ETL项目
    javascript refresh page 刷新页面的几种方法(转)
    innerHtml 和 innerText用法:(转载)
    用JavaScript隐藏控件的方法(转)
    JS中onpropertychange事件和onchange事件区别
    Window 对象
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/6501124.html
Copyright © 2020-2023  润新知