bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI
主席树模板题
两题有细节不同
- #include<algorithm>
- #include<iostream>
- #include<cstdlib>
- #include<cstring>
- #include<cstdio>
- #include<string>
- #include<cmath>
- #include<ctime>
- #include<queue>
- #include<stack>
- #include<map>
- #include<set>
- #define rre(i,r,l) for(int i=(r);i>=(l);i--)
- #define re(i,l,r) for(int i=(l);i<=(r);i++)
- #define Clear(a,b) memset(a,b,sizeof(a))
- #define inout(x) printf("%d",(x))
- #define douin(x) scanf("%lf",&x)
- #define strin(x) scanf("%s",(x))
- #define LLin(x) scanf("%lld",&x)
- #define op operator
- #define CSC main
- typedef unsigned long long ULL;
- typedef const int cint;
- typedef long long LL;
- using namespace std;
- void inin(int &ret)
- {
- ret=;int f=;char ch=getchar();
- while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
- while(ch>=''&&ch<='')ret*=,ret+=ch-'',ch=getchar();
- ret=f?-ret:ret;
- }
- int root[],l[],r[],sum[];
- int n,m,ed;
- void update(int ll,int rr,int x,int &y,int xx)
- {
- y=++ed,sum[y]=sum[x]+;
- if(ll==rr)return ;
- l[y]=l[x],r[y]=r[x];
- int mid=(ll+rr)>>;
- if(xx<=mid)update(ll,mid,l[x],l[y],xx);
- else update(mid+,rr,r[x],r[y],xx);
- }
- int query(int L,int R)
- {
- int ll=,rr=n,mid,x=root[L-],y=root[R],temp=(R-L+)>>;
- while(ll<rr)
- {
- if(sum[y]-sum[x]<=temp)return ;mid=(ll+rr)>>;
- if(sum[l[y]]-sum[l[x]]>temp)rr=mid,x=l[x],y=l[y];
- else if(sum[r[y]]-sum[r[x]]>temp)ll=mid+,x=r[x],y=r[y];
- else return ;
- }
- return ll;
- }
- int CSC()
- {
- inin(n),inin(m);
- re(i,,n)
- {
- int x;inin(x);
- update(,n,root[i-],root[i],x);
- }
- re(i,,m)
- {
- int ll,rr;inin(ll),inin(rr);
- printf("%d\n",query(ll,rr));
- }
- return ;
- }
bzoj3524
- #include<algorithm>
- #include<iostream>
- #include<cstdlib>
- #include<cstring>
- #include<cstdio>
- #include<string>
- #include<cmath>
- #include<ctime>
- #include<queue>
- #include<stack>
- #include<map>
- #include<set>
- #define rre(i,r,l) for(int i=(r);i>=(l);i--)
- #define re(i,l,r) for(int i=(l);i<=(r);i++)
- #define Clear(a,b) memset(a,b,sizeof(a))
- #define inout(x) printf("%d",(x))
- #define douin(x) scanf("%lf",&x)
- #define strin(x) scanf("%s",(x))
- #define LLin(x) scanf("%lld",&x)
- #define op operator
- #define CSC main
- typedef unsigned long long ULL;
- typedef const int cint;
- typedef long long LL;
- using namespace std;
- void inin(int &ret)
- {
- ret=;int f=;char ch=getchar();
- while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
- while(ch>=''&&ch<='')ret*=,ret+=ch-'',ch=getchar();
- ret=f?-ret:ret;
- }
- int root[],l[],r[],sum[];
- int n,m,ed;
- void update(int ll,int rr,int x,int &y,int xx)
- {
- y=++ed,sum[y]=sum[x]+;
- if(ll==rr)return ;
- l[y]=l[x],r[y]=r[x];
- int mid=(ll+rr)>>;
- if(xx<=mid)update(ll,mid,l[x],l[y],xx);
- else update(mid+,rr,r[x],r[y],xx);
- }int lim;
- int query(int L,int R)
- {
- if(L>R)swap(L,R);
- int ll=,rr=lim,mid,x=root[L-],y=root[R],temp=(R-L+)>>;
- while(ll!=rr)
- {
- if(sum[y]-sum[x]<=temp)return ;mid=(ll+rr)>>;
- if(sum[l[y]]-sum[l[x]]>temp)rr=mid,x=l[x],y=l[y];
- else if(sum[r[y]]-sum[r[x]]>temp)ll=mid+,x=r[x],y=r[y];
- else return ;
- }
- return ll;
- }
- int CSC()
- {
- inin(n),inin(lim);
- re(i,,n)
- {
- int x;inin(x);
- update(,lim,root[i-],root[i],x);
- }inin(m);
- re(i,,m)
- {
- int ll,rr;inin(ll),inin(rr);
- int ans=query(ll,rr);if(ans)cout<<"yes ";else cout<<"no\n";
- if(ans)printf("%d\n",ans);
- }
- return ;
- }
bzoj2223
bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI的更多相关文章
- bzoj 2223 [Coci 2009]PATULJCI
[Coci 2009]PATULJCI Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1286 Solved: 553[Submit][Status ...
- 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers
题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...
- BZOJ 2223 [Coci 2009]PATULJCI | 主席树练习 (好像是个权限题啊)
题目: 给个序列,问[l,r]区间内是否存在x>(r-l+1)>>1 题解: 好像大家都觉得这个题比较简单,没人写题解啊 先说BZOJ样例的格式应该是,第二个数是序列中数的范围(就是 ...
- BZOJ 2223: [Coci 2009]PATULJCI 主席树
Code: #include<bits/stdc++.h> #define maxn 300001 #define mid ((l+r)>>1) using namespace ...
- [BZOJ2223][BZOJ3524][Poi2014]Couriers 主席树
3524: [Poi2014]Couriers Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2436 Solved: 960[Submit][St ...
- [bzoj3524==bzoj2223][Poi2014]Couriers/[Coci 2009]PATULJCI——主席树+权值线段树
题目大意 给定一个大小为n,每个数的大小均在[1,c]之间的数列,你需要回答m个询问,其中第i个询问形如\((l_i, r_i)\),你需要回答是否存在一个数使得它在区间\([l_i,r_i]\)中出 ...
- 2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)
传送门 主席树经典题目. 直接利用主席树差分的思想判断区间中数的个数是否合法然后决定左走右走就行了. 实际上跟bzoj3524是同一道题. 代码: #include<bits/stdc++.h& ...
- BZOJ2223 [Coci 2009]PATULJCI
求区间内个数大于rank的一个数 主席树求一下就好啦! /************************************************************** Problem: ...
- Bzoj3524 [Poi2014]Couriers
Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...
随机推荐
- resize 按钮不会被伪元素遮盖
textarea默认有个resize样式,效果就是下面这样 读 <css 揭秘>时发现两个亮点: 其实这个属性不仅适用于 textarea 元素,适用于下面所有元素: elements w ...
- 专访|HPE测试中心总监徐盛:测试新思维-DevOps,持续测试,更敏捷,更快速
2016年7月22日,「HPE&msup软件技术开放日」将在上海浦东新区,张江高科技园区纳贤路799号科荣大厦小楼2楼举办,msup携手HPE揭秘全球测试中心背后的12条技术实践. 徐盛:HP ...
- numpy.ndarray的赋值操作
mat=zeros((3,4)) #生成一个3行4列全部元素为0的矩阵 mat[1,:]=111 #从第1行第0列开始,一直到最后一列,赋值为1,效果与mat[1,0:3]相同,前置0可以省略,最后的 ...
- 冒泡排序之python
冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工 ...
- 设置自己的APP能打开文件(在其他应用中打开显示自己的应用)
http://blog.csdn.net/leewolf130/article/details/29568961 http://www.jianshu.com/p/9711c3daf4bb https ...
- flask之SQLAlchemy语法和原生mysql语法
作为一个程序员,我想把有限的大脑空间留给有价值的知识,本人偏向于原生语法 特随笔于易查阅 # -*- encoding: utf-8 -*- from flask import Flask,rende ...
- physics---hdu5826(积分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5826 题意:有n个小球在一条直线上滚动,起始位置为xi, 方向为di(-1往左走,1往右走),初始速度 ...
- Python开发【笔记】:关闭线程的方法
1.通过API进行线程关闭 import threading import time import inspect import ctypes def _async_raise(tid, exctyp ...
- Java GUI程序设计
在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面.如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框.这个QQ图标就可以被称作图形化的用户界面. 其实,用户界面的类型分为两类:Com ...
- javascript php 数组 json 对比 总结
看到这个博客,终于明白JavaScript 里只有一种 Array,不存在索引数组和关联数组. 1.在js中所有要素都是继承自Object对象的,任何对象都能通过obj["name" ...