• hdu 3074 Multiply game(模板级线段树)


    离机房关门还有十分钟,这点时间能干些什么?故作沉思地仰望星空,重新捋一下一天的学习进度,或者,砍掉一棵模板级线段树。

    纯模板,就是把单点更新,区间求和改为单点更新,区间求积。

    1A。

    #include<stdio.h>
    #include<string.h>
    #define M 1000000007
    #define N 50005
    struct node
    {
        int x,y;
        __int64 sum;
    }a[N*3];
    void CreatTree(int t,int x,int y)
    {
        a[t].x=x;
        a[t].y=y;
        a[t].sum=0;
        if(x==y)
            return ;
        int temp=t*2;
        int mid=(x+y)/2;
        CreatTree(temp,x,mid);
        CreatTree(temp+1,mid+1,y);
        return ;
    }
    void InsertTree(int t,int x,int k)
    {
        if(a[t].x==a[t].y)
        {
            a[t].sum=k;
            return ;
        }
        int temp=t*2;
        int mid=(a[t].x+a[t].y)/2;
        if(x<=mid)
            InsertTree(temp,x,k);
        else
            InsertTree(temp+1,x,k);
        a[t].sum=a[temp].sum*a[temp+1].sum%M;
        return ;
    }
    __int64 FindTree(int t,int x,int y)
    {
        __int64 sum=1;
        if(a[t].x==x&&a[t].y==y)
            return a[t].sum;
        int temp=t*2;
        int mid=(a[t].x+a[t].y)/2;
        if(y<=mid)
            sum*=FindTree(temp,x,y);
        else if(x>mid)
            sum*=FindTree(temp+1,x,y);
        else
        {
            sum=FindTree(temp,x,mid)*sum%M;
            sum=FindTree(temp+1,mid+1,y)*sum%M;
        }
        return sum;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n;
            scanf("%d",&n);
            CreatTree(1,1,n);
            int i;
            for(i=1;i<=n;i++)
            {
                int x;
                scanf("%d",&x);
                InsertTree(1,i,x);
            }
            int m;
            scanf("%d",&m);
            while(m--)
            {
                int x,y,z;
                scanf("%d%d%d",&x,&y,&z);
                if(x==0)
                    printf("%I64d
    ",FindTree(1,y,z));
                else
                    InsertTree(1,y,z);
            }
        }
        return 0;
    }


  • 相关阅读:
    (转)Android Studio解决unspecified on project app resolves to an APK archive which is not supported
    OpenGL 学习总结
    关于tap设备
    写把proto函数搞清楚
    qemu中是怎么模拟的新的设备
    kvm搭建完成了,那么问题来了,到底是什么原理
    kvm竟然抓不到kvm的tracepoint
    安装KVM
    试着理解下kvm
    网络namespace
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3201409.html
Copyright © 2020-2023  润新知