找了一个比较简单的主席树写法:

码:

#include<iostream>
#include<cstdio>
using namespace std;
#include<algorithm>
#define N 100005
int dui[N],fanzhao[N],n,m,a,b,zuo[N],you[N],tot,cnt,size[N],i,num[N],k,rt[N],c[N];void jia(int l,int r,int qian,int &now,int wei)
{int ql=zuo[qian],qr=you[qian];now=++tot; //比上一个根的更新 size[now]=size[qian]+1;
//      cout<<size[now]<<" ";//if(l==r)return;int mid=((l+r)>>1);if(wei<=mid){you[now]=qr;jia(l,mid,ql,zuo[now],wei);}else{zuo[now]=ql;jia(mid+1,r,qr,you[now],wei);     }}int zhao(int a,int b,int l,int r,int k)
{   if(l==r)return l ;int lcha=size[zuo[b]]-size[zuo[a]];int rcha=size[you[b]]-size[you[a]];int mid=(l+r)>>1;if(lcha>=k)zhao(zuo[a],zuo[b],l,mid,k);else  zhao(you[a],you[b],mid+1,r,k-lcha);
}int main()
{scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&c[i]);num[i]=c[i];}sort(num+1,num+1+n);for(i=1;i<=n;i++){if(num[i]!=num[i-1]||num[i]==1){dui[++cnt]=num[i];fanzhao[num[i]]=cnt;     }}rt[0]=0;for(i=1;i<=n;i++){jia(1,cnt,rt[i-1],rt[i],fanzhao[c[i]]);}for(i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&k);a--;printf("%d\n",zhao(rt[a],rt[b],1,cnt,k));}} 

2017.4.1 kth_number 思考记录相关推荐

  1. 2017.9.5 组合数学 思考记录

    这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...

  2. 2017.9.4 Nim 思考记录

    只要知道nim的结论   这题就是链剖板子题.1A 注意bzoj 的  换行符是     \r!!      \r!!      \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...

  3. 2017.10.28 排序 思考记录

    这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...

  4. 2017.10.28 压缩 思考记录

    这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd   = abRRcdcdcdcdR != Ma ...

  5. 2017.10.6 单词 思考记录

    少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...

  6. 2017.10.5 高速公路 思考记录

    ..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...

  7. 2017.10.1 蚯蚓 思考记录

    现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...

  8. 2017.9.28 产品加工 思考记录

    很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...

  9. 2017.9.28 降雨量 思考记录

    论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况  只可能是maybe 对于一个没有的情况, ...

最新文章

  1. python自学视频教程-私藏已久的7个Python视频教程
  2. 精通机器学习的5本免费电子书(5 free e-books for machine learning mastery)
  3. deepin深度启动盘制作工具下载地址
  4. java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法
  5. linux检查系统硬件信息命令,Linux查看系统信息(硬件信息, 系统设置信息等) 命令 | Soo Smart!...
  6. Win7 64bit系统下未能加载文件或程序集“System.Data.SQLite”的另一解决办法
  7. C#如何获得屏幕宽度和高度
  8. 3D计算机组装,3DMax电脑组装配置
  9. 商标不仅仅是个标记,更是企业的无形资产和价值财富!
  10. 海龟编辑器怎么运行html,怎么使用海龟编辑器
  11. C语言——将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  12. 思科GNS3模拟器安装包和流程
  13. android studio sdk samples,qcloud-sdk-android-samples
  14. linux下为php添加GD库(重新编译php)
  15. 用c语言模拟石头剪刀布小游戏
  16. vue element 的el-checkbox-group默认全部选中
  17. Android Aop预研
  18. Dynamics 365 多租户?多实例?
  19. iOS造轮子-数字金额每隔3位用逗号隔开(Swift实现)
  20. Apple Final Cut Pro X 10.5 视频编辑软件 下载 百度网盘

热门文章

  1. Android笔记 动画之tween(补间)动画demo
  2. 二维声波方程的有限差分法数值模拟
  3. anaconda安装PIL库报错:PIL库不存在的解决方法
  4. LeetCode-76: 最小覆盖子串
  5. WORD如何取消编辑保护?
  6. 页面文字请使用css进行控制,css控制页面文字不能被选中user-select:none;
  7. 艾宾浩斯记忆表格excel_考研干货 | 如何使用艾宾浩斯曲线帮助记忆知识
  8. 【图像处理基础知识】-混合高斯背景建模
  9. Spark源码分析:多种部署方式之间的区别与联系
  10. 游标声明 oracle,Oracle游标声明