zoukankan      html  css  js  c++  java
  • LUOGU1438无聊的数列

    区间加等差数列单点查询

    思路:

    差分,通过树状数组修改,然后保存两个数组,一个存公差,一个存和

    然后正常操作即可

    在学校潦草写的很潦草啦

    代码如下:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define MAXN 100010
    using namespace std;
    int a[MAXN][2],p[MAXN],n;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void add(int x,int k,int d)
    {
        while(x<=n)
        {
            a[x][0]+=k;
            a[x][1]+=d;
            k+=d*lowbit(x);
            x+=lowbit(x);
        }
    }
    int sum(int x)
    {
        int ans=0,pos=x;
        while(pos)
        {
            ans+=a[pos][0]+(x-pos)*a[pos][1];
            pos-=lowbit(pos);
        }
        return ans;
    }
    int main()
    {
        int x,i,l,r,k,d,s,m;
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
            scanf("%d",&p[i]);
        for(i=1;i<=m;i++)
        {
            scanf("%d",&s);
            if(s==1)
            {
                scanf("%d%d%d%d",&l,&r,&k,&d);
                add(l,k,d);
                add(r+1,-k-(r-l+1)*d,-d);
            }
            else
            {
                scanf("%d",&x);
                printf("%d
    ",p[x]+sum(x));
            }
        }
        return 0;
    }
  • 相关阅读:
    Zabbix 最新安装视频
    Centos大文件切割和合并
    Docker 基础
    Docker的安装及加速
    mysql/MariaDB 搭建后创建密码及开启远程
    zabbix 添加 ROS 软路由监控 WinBox设置
    解决zabbix3.4X图形页面中文乱码
    Redis 4.0+安装及配置
    Zabbix3.4服务器的搭建--CentOS7
    CentOS 7 Nginx+PHP环境搭建!
  • 原文地址:https://www.cnblogs.com/hanyuweining/p/10321986.html
Copyright © 2011-2022 走看看