2017.4.1 kth_number 思考记录
找了一个比较简单的主席树写法:
码:
#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 思考记录相关推荐
- 2017.9.5 组合数学 思考记录
这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...
- 2017.9.4 Nim 思考记录
只要知道nim的结论 这题就是链剖板子题.1A 注意bzoj 的 换行符是 \r!! \r!! \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...
- 2017.10.28 排序 思考记录
这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...
- 2017.10.28 压缩 思考记录
这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd = abRRcdcdcdcdR != Ma ...
- 2017.10.6 单词 思考记录
少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...
- 2017.10.5 高速公路 思考记录
..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...
- 2017.10.1 蚯蚓 思考记录
现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...
- 2017.9.28 产品加工 思考记录
很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...
- 2017.9.28 降雨量 思考记录
论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况 只可能是maybe 对于一个没有的情况, ...
最新文章
- python自学视频教程-私藏已久的7个Python视频教程
- 精通机器学习的5本免费电子书(5 free e-books for machine learning mastery)
- deepin深度启动盘制作工具下载地址
- java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法
- linux检查系统硬件信息命令,Linux查看系统信息(硬件信息, 系统设置信息等) 命令 | Soo Smart!...
- Win7 64bit系统下未能加载文件或程序集“System.Data.SQLite”的另一解决办法
- C#如何获得屏幕宽度和高度
- 3D计算机组装,3DMax电脑组装配置
- 商标不仅仅是个标记,更是企业的无形资产和价值财富!
- 海龟编辑器怎么运行html,怎么使用海龟编辑器
- C语言——将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
- 思科GNS3模拟器安装包和流程
- android studio sdk samples,qcloud-sdk-android-samples
- linux下为php添加GD库(重新编译php)
- 用c语言模拟石头剪刀布小游戏
- vue element 的el-checkbox-group默认全部选中
- Android Aop预研
- Dynamics 365 多租户?多实例?
- iOS造轮子-数字金额每隔3位用逗号隔开(Swift实现)
- Apple Final Cut Pro X 10.5 视频编辑软件 下载 百度网盘
热门文章
- Android笔记 动画之tween(补间)动画demo
- 二维声波方程的有限差分法数值模拟
- anaconda安装PIL库报错:PIL库不存在的解决方法
- LeetCode-76: 最小覆盖子串
- WORD如何取消编辑保护?
- 页面文字请使用css进行控制,css控制页面文字不能被选中user-select:none;
- 艾宾浩斯记忆表格excel_考研干货 | 如何使用艾宾浩斯曲线帮助记忆知识
- 【图像处理基础知识】-混合高斯背景建模
- Spark源码分析:多种部署方式之间的区别与联系
- 游标声明 oracle,Oracle游标声明