思路:

外围一个权值线段树

里面是个区间线段树

搞一个标记永久化

  1. //By SiriusRen
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define N 100050
  7. #define int long long
  8. int n,m,op,xx,yy,zz,cnt,root[N*16],lson[N*160],rson[N*160];
  9. int tree[N*160],lazy[N*160];
  10. void insert(int l,int r,int &rt){
  11. if(!rt)rt=++cnt;
  12. if(l>=xx&&r<=yy){tree[rt]+=r-l+1,lazy[rt]++;return;}
  13. int mid=(l+r)>>1;
  14. if(mid<xx)insert(mid+1,r,rson[rt]);
  15. else if(mid>=yy)insert(l,mid,lson[rt]);
  16. else insert(l,mid,lson[rt]),insert(mid+1,r,rson[rt]);
  17. tree[rt]+=(min(yy,r)-max(xx,l)+1);
  18. }
  19. void Insert(int l,int r,int pos){
  20. insert(1,n,root[pos]);
  21. if(l==r)return;
  22. int mid=(l+r)>>1,Lson=pos<<1,Rson=pos<<1|1;
  23. if(mid<zz)Insert(mid+1,r,Rson);
  24. else Insert(l,mid,Lson);
  25. }
  26. int query(int l,int r,int rt){
  27. if(!rt)return 0;
  28. if(l>=xx&&r<=yy)return tree[rt];
  29. int mid=(l+r)>>1,ret=0;
  30. if(mid>=xx)ret+=query(l,mid,lson[rt]);
  31. if(mid<yy)ret+=query(mid+1,r,rson[rt]);
  32. return ret+lazy[rt]*(min(yy,r)-max(xx,l)+1);
  33. }
  34. int Query(int l,int r,int pos){
  35. if(l==r){return l-50001;}
  36. int mid=(l+r)>>1,Lson=pos<<1,Rson=pos<<1|1;
  37. int res=query(1,n,root[Rson]);
  38. if(res>=zz)return Query(mid+1,r,Rson);
  39. else{zz-=res;return Query(l,mid,Lson);}
  40. }
  41. signed main(){
  42. scanf("%lld%lld",&n,&m);
  43. for(int i=1;i<=m;i++){
  44. scanf("%lld%lld%lld%lld",&op,&xx,&yy,&zz);
  45. if(op==1)zz+=50001,Insert(1,N,1);
  46. else printf("%lld\n",Query(1,N,1));
  47. }
  48. }

BZOJ 3110 线段树套线段树的更多相关文章

  1. [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树)

    [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合. ...

  2. bzoj 3110 [Zjoi2013]K大数查询——线段树套线段树(标记永久化)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3110 第一道线段树套线段树! 第一道标记永久化! 为什么为什么写了两个半小时啊…… 本想线段 ...

  3. [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】

    题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...

  4. dfs序+主席树 或者 树链剖分+主席树(没写) 或者 线段树套线段树 或者 线段树套splay 或者 线段树套树状数组 bzoj 4448

    4448: [Scoi2015]情报传递 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 588  Solved: 308[Submit][Status ...

  5. bzoj 3196 Tyvj 1730 二逼平衡树(线段树套名次树)

    3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1807  Solved: 772[Submit][Stat ...

  6. ZJOI 2017 树状数组(线段树套线段树)

    题意 http://uoj.ac/problem/291 思路 不难发现,九条カレン醬所写的树状数组,在查询区间 \([1,r]\) 的时候,其实在查询后缀 \([r,n]\) :在查询 \([l,r ...

  7. BZOJ4317Atm的树&BZOJ2051A Problem For Fun&BZOJ2117[2010国家集训队]Crash的旅游计划——二分答案+动态点分治(点分树套线段树/点分树+vector)

    题目描述 Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径都有边权,一个神秘的声音告诉他,每个点到其他的 ...

  8. hdu-4819-线段树套线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=4819 给出一个N*N的矩阵,每次询问一个m*m的子矩阵里的floor((maxv+minv)/2)并把中间的元素 ...

  9. 【vijos】1750 建房子(线段树套线段树+前缀和)

    https://vijos.org/p/1750 是不是我想复杂了.... 自己yy了个二维线段树,然后愉快的敲打. 但是wa了两法.......sad 原因是在处理第二维的更新出现了个小问题,sad ...

  10. [TJOI2017][bzoj4889] 不勤劳的图书管理员 [线段树套线段树]

    题面 传送门 思路 考虑两本书的位置交换对答案的贡献: (为了方便描述,用"左边那本"和"右边那本"称呼两本我们要交换的书,"中间那本"是我 ...

随机推荐

  1. php扩展之 pdo_mysql.so

    总结:新搭编译安装的 nginx+php+mysql环境,执行之前开发的项目遇到了没有安装pdo的问题 1.进入到php5的源代码包里面,ext以下.找到pdo_mysql目录 首先运行:/usr/l ...

  2. Android Parcelable vs Serializable

    序列化 在Android中.对象在实现序列化之前是无法直接作为Intent參数在Activity之间传递的. Android中对象序列化能够通过实现Serializable接口或者实现Parcelab ...

  3. 黑马day15 文件上传&amp;apche的工具包

    1.肯定要导入apche的jar包 2.要使用的类的介绍.. 2.1DiskFileItemFactory  public DiskFileItemFactory(int sizeThreshold, ...

  4. thinkphp项目上传到github,为什么缺少很多文件

    thinkphp项目上传到github,为什么缺少很多文件 问题: 把tp5项目push到码云(类似github)上,为什么没有thinkphp这个核心库? 然后我看了下码云和github上,官方的t ...

  5. [jzoj 6087] [GDOI2019模拟2019.3.26] 获取名额 解题报告 (泰勒展开+RMQ+精度)

    题目链接: https://jzoj.net/senior/#main/show/6087 题目: 题解: 只需要统计$\prod_{i=l}^r (1-\frac{a_i}{x})$ =$exp(\ ...

  6. java web项目中资源国际化

    有一些网站会有语言栏选项: 选择英文,内容就显示为英文: 选择中文,内容就显示文中文. 这里就用到了国际化资源. 先看效果图: 步骤: 1.建立资源包: mess_en_US.properties ( ...

  7. Python内置数据结构之列表list

    1. Python的数据类型简介 数据结构是以某种方式(如通过编号)组合起来的数据元素(如数.字符乃至其他数据结构)集合.在Python中,最基本的数据结构为序列(sequence). Python内 ...

  8. 安卓、safari和微信各个浏览器的设计标准

  9. VB学习生成JavaBean

    Application.ActiveWorkbook.Path 获取当前excel文件所在的文件地址 Excel VBA中表示当前工作簿,有Activeworkbook和Thisworkbook 两种 ...

  10. 小程序QQ版表情解析组件

    代码片段: [https://developers.weixin.qq.com/s/KLaD5MmD7V45) GitHub: https://github.com/WozHuang/Miniprog ...