BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
来源:互联网 发布:电视软件哪个好 编辑:程序博客网 时间:2024/06/05 17:56
题目链接
若左右子树大小之差<=(r-l+1)/2,返回0。
否则在大的一边继续搜。
这两题好像都不需要离散化。。
【代码】
1.3524
#include <cstdio>#include <iostream>#include <queue>#include <vector>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#define N 500005 #define M 10000005#define INF 1e9#define mod 1000000007using namespace std;typedef long long ll;typedef pair<ll,ll> pa;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int n,m,tot,cnt;int a[N],num[N],hash[N];int ls[M],rs[M],sz[M],root[N];void Insert(int l,int r,int x,int &y,int z){ y=++cnt;sz[y]=sz[x]+1;if(l==r) return; ls[y]=ls[x],rs[y]=rs[x]; int mid=l+r>>1; if(z<=mid) Insert(l,mid,ls[x],ls[y],z); else Insert(mid+1,r,rs[x],rs[y],z); }int Query(int l,int r,int x,int y,int z){ if(l==r) return l; int mid=l+r>>1; if(sz[ls[y]]-sz[ls[x]]>z) return Query(l,mid,ls[x],ls[y],z); if(sz[rs[y]]-sz[rs[x]]>z) return Query(mid+1,r,rs[x],rs[y],z); return 0;}int main(){ n=read(),m=read(); for(int i=1;i<=n;i++) Insert(1,n,root[i-1],root[i],read()); while(m--) { static int x,y;x=read(),y=read(); printf("%d\n",Query(1,n,root[x-1],root[y],(y-x+1)>>1)); } return 0;}
2.2223
#include <cstdio>#include <iostream>#include <queue>#include <vector>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#define N 300005 #define M 5500005#define INF 1e9#define mod 1000000007using namespace std;typedef long long ll;typedef pair<ll,ll> pa;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int n,m,tot,cnt;int ls[M],rs[M],sz[M],root[N];void Insert(int l,int r,int x,int &y,int z){ y=++cnt;sz[y]=sz[x]+1; if(l==r) return ; ls[y]=ls[x],rs[y]=rs[x]; int mid=l+r>>1; if(z<=mid) Insert(l,mid,ls[x],ls[y],z); else Insert(mid+1,r,rs[x],rs[y],z);}int Query(int l,int r,int x,int y,int z){ if(l==r) return l; int mid=l+r>>1; if(sz[ls[y]]-sz[ls[x]]>z) return Query(l,mid,ls[x],ls[y],z); if(sz[rs[y]]-sz[rs[x]]>z) return Query(mid+1,r,rs[x],rs[y],z); return 0;}void Solve(){ m=read(); while(m--) { static int x,y; x=read(),y=read(); int tmp=Query(1,tot,root[x-1],root[y],(y-x+1)>>1); if(!tmp) printf("no\n"); else printf("yes %d\n",tmp); }}int main(){ n=read();tot=read(); for(int i=1;i<=n;i++) Insert(1,tot,root[i-1],root[i],read()); Solve(); return 0;}
0 0
- BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers
- [BZOJ3524] [Poi2014]Couriers/[BZOJ2223] [Coci 2009]PATULJCI
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- bzoj3524: [Poi2014]Couriers&&2223: [Coci 2009]PATULJCI
- 【bzoj3524/2223】[Poi2014]Couriers/[Coci 2009]PATULJCI 主席树
- bzoj2223 [Coci 2009]PATULJCI(同bzoj3524)
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI
- [BZOJ2223][Coci 2009]PATULJCI
- bzoj2223[Coci 2009] PATULJCI
- bzoj2223 [Coci 2009]PATULJCI
- 3524: [Poi2014]Couriers/2223: [Coci 2009]PATULJCI 主席树
- bzoj2223: [Coci 2009]PATULJCI 主席树
- BZOJ2223 [Coci 2009]PATULJCI 题解&代码
- [bzoj2223][Coci 2009]PATULJCI 主席树
- [主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
- 【BZOJ】3524 [Poi2014]Couriers && 【BZOJ】2223 [Coci 2009]PATULJCI 主席树
- [Bzoj3524][Poi2014]Couriers
- bzoj3524[Poi2014]Couriers
- 使用Zbrush的缩放功能的方法
- Unity Shader (二)裁剪(Culling)
- 关于不同浏览器对URL编码的分析
- eclipse mars 安装groovy插件
- Hbase新旧查询过程详解
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- Cloudera Manager分析
- ConcurrentHashMap源码解读
- 哈理工OJ 1176 小陈老师、雪人(排序+优先队列模拟)
- 美团推荐算法实践
- git学习笔记--git图像化界面GUI的使用
- iOS 10.0系统麦克风、相机权限崩溃问题解决 —— HERO博客
- 在php中使用正则preg_replace
- Mybatis问题:There is no getter for property named 'VALUE' in 'class java.lang.String'