//块状链表
//分块排序,然后每次查找时在暴力查找头和尾两个块。
//中间那些块,因为有序所以只需2分查找即可。我用的是lower_pound();
//插入是,也是头和尾暴力插入,中间那些加到一个累计里即可。
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int a[1000005],b[1000005],lei[1000005],dian[1000005],l[1000005],r[1000005];
int n,m,len,len1;
char ch[2];
void jian(int a1)
{
 l[a1]=(a1-1)*len1+1;
 r[a1]=min(a1*len1,n);
 for(int i=l[a1];i<=r[a1];i++)
   b[i]=a[i];
 sort(b+l[a1],b+r[a1]+1);
}
void jia(int a1,int a2,int a3)
{
 if(dian[a1]==dian[a2])
   {
    for(int i=a1;i<=a2;i++)
      a[i]+=a3;
    jian(dian[a1]);
    return;
   }
 for(int i=a1;i<=r[dian[a1]];i++)
    a[i]+=a3;
 for(int i=l[dian[a2]];i<=a2;i++)
    a[i]+=a3;
 for(int i=dian[a1]+1;i<dian[a2];i++)
    lei[i]+=a3;
 jian(dian[a1]);
 jian(dian[a2]);
 return;
}
int zhao(int a1,int a2,int a3)
{
 int sum=0,s;
 if(dian[a1]==dian[a2])
   {
    for(int i=a1;i<=a2;i++)
      if(a[i]+lei[dian[a1]]>=a3)
        sum++;
    return sum;
   }
 for(int i=a1;i<=r[dian[a1]];i++)
    if(a[i]+lei[dian[a1]]>=a3)
      sum++;
 for(int i=l[dian[a2]];i<=a2;i++)
    if(a[i]+lei[dian[a2]]>=a3)
      sum++;
 for(int i=dian[a1]+1;i<dian[a2];i++)
   {
     s=lower_bound(b+l[i],b+r[i]+1,a3-lei[i])-b;
     sum+=r[i]+1-s;
      }
 return sum;
}
int main()
{
 scanf("%d%d",&n,&m);
 for(int i=1;i<=n;i++)
   scanf("%d",&a[i]);
 len1=floor(sqrt(n));
 len=n/len1;
 if(n%len1)
   len++;
 for(int i=1;i<=len;i++)
   jian(i);
 for(int i=1;i<=n;i++)
   dian[i]=(i-1)/len1+1;
 for(int i=0;i<m;i++)
   {
    int a1,a2,a3;
    scanf("%s%d%d%d",ch,&a1,&a2,&a3);
    if(ch[0]=='A')
      printf("%d\n",zhao(a1,a2,a3));
    else
      jia(a1,a2,a3);
   }
 return 0;
}

块状链表 bzoj 3343教主的魔法的更多相关文章

  1. BZOJ 3343: 教主的魔法(分块+二分查找)

    BZOJ 3343: 教主的魔法(分块+二分查找) 3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved:  ...

  2. BZOJ 3343: 教主的魔法 [分块]【学习笔记】

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discus ...

  3. Bzoj 3343: 教主的魔法 分块,二分

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 821  Solved: 364[Submit][Status][Discuss ...

  4. Bzoj 3343: 教主的魔法(分块+二分答案)

    3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...

  5. BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3343  ||  https://www.luogu.org/problem/show?pid=280 ...

  6. BZOJ 3343教主的魔法

    Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的 ...

  7. bzoj 3343: 教主的魔法

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 924  Solved: 402[Submit][Status][Discuss] Descriptio ...

  8. bzoj 3343 教主的魔法 分块

    修改直接对整块打标记,两边暴力. 查询需要保证每个整块有序,所以在修改时排序就好啦 #include<cstdio> #include<cstring> #include< ...

  9. [bzoj] 3343 教主的魔法 || 带修改分块

    原题 长度为n的序列,有两种操作: 1.[l,r]区间每个数+w 2.询问[l,r]区间有多少个数>c 记录lazy数组即可. #include<cstdio> #include&l ...

随机推荐

  1. golang开发:环境篇(五)实时加载工具gin的使用

    gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率. 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须 ...

  2. Mybatis配置、逆向工程自动生成代码(CRUD案例)

    目的: mybatis简介 搭建mybatis环境 基于SSM逆向工程的使用 Mybatis增删改查案例 mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及 ...

  3. markdown语法之列表与缩进

    在markdown语法中, 用*或+或-在行首表示无序列表.在这些符号之后应该空一格然后输入内容. 例如 + 无序列表 * 无序列表 - 无序列表 会被markdown语法渲染为 无序列表 列表嵌套 ...

  4. vue+iview的form表单校验总结

    这篇文章时关于如何使用iview的form表单校验.主要学习如何使用form校验(以校验文字长度为例),以及如何动态添加校验规则和异步校验. 1.为需要校验的表单添加form标签 <!--注意: ...

  5. javascript -- 把按钮变成读秒倒计时

    $('#btn').click(function(){ //设置按钮倒计时 $(this).addClass('disabled'); //把按钮变灰 $(this).attr('disabled', ...

  6. iOS - 图片模糊效果实现

    下面给大家介绍图片模糊效果的三种方法 第一种使用Core Image进行模糊 - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFl ...

  7. visualSVN server 安装成功,但是无法连接,url打不开

    转自:https://www.oschina.net/question/878142_91825 点击开始–>程序->VisualSVN–>VisuaSVN Server Manag ...

  8. S5PV210 PWM

    定时器PWM输出 原理图 GPD0CON, R/W, Address = 0xE020_00A0 CON, R/W, Address = 0xE250_0008 相关文章:http://blog.cs ...

  9. BKP和RTC

    Stm32内部有多个BKP寄存器,在主电源被切断或者系统产生复位的时候,BKP寄存器仍然可以利用备用电源的支持保持其重要内容. BKP在实际应用中可以存入重要数据,防止被恶意查看. BKP有入侵检测, ...

  10. 【leetcode】366.Find Leaves of Binary Tree

    原题 Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all lea ...