当前位置: 首页 > wzjs >正文

网站建设模板怎么用百度首页排名优化平台

网站建设模板怎么用,百度首页排名优化平台,东莞免费做网站公司,thinkphp网站开发教程洛谷P3871 [TJOI2010] 中位数 洛谷题目传送门 题目描述 给定一个由 N N N 个元素组成的整数序列,现在有两种操作: 1 add a \texttt{1 add }\textit{a} 1 add a:在该序列的最后添加一个整数 a a a,组成长度为 N 1 N 1 N1 的…

洛谷P3871 [TJOI2010] 中位数

洛谷题目传送门

题目描述

给定一个由 N N N 个元素组成的整数序列,现在有两种操作:

  • 1 add a \texttt{1 add }\textit{a} 1 add a:在该序列的最后添加一个整数 a a a,组成长度为 N + 1 N + 1 N+1 的整数序列。
  • 2 mid \texttt{2 mid} 2 mid:输出当前序列的中位数。

中位数是指将一个序列按照从小到大排序后处在中间位置的数。(若序列长度为偶数,则指处在中间位置的两个数中较小的那个)

1 1 1 [ 1 , 2 , 13 , 14 , 15 , 16 ] [1, 2, 13, 14, 15, 16] [1,2,13,14,15,16] 中位数为 13 13 13
2 2 2 [ 1 , 3 , 5 , 7 , 10 , 11 , 17 ] [1, 3, 5, 7, 10, 11, 17] [1,3,5,7,10,11,17] 中位数为 7 7 7
3 3 3 [ 1 , 1 , 1 , 2 , 3 ] [1, 1, 1, 2, 3] [1,1,1,2,3] 中位数为 1 1 1

输入格式

第一行为初始序列长度 N N N。第二行为 N N N 个整数,表示整数序列,数字之间用空格分隔。第三行为操作数 M M M,即要进行 M M M 次操作。下面为 M M M 行,每行输入格式如题意所述。

输出格式

对于每个 mid \verb!mid! mid 操作输出中位数的值。

输入输出样例 #1

输入 #1

6
1 2 13 14 15 16
5
add 5
add 3
mid
add 20
mid

输出 #1

5
13

说明/提示

数据范围及约定

  • 对于 30 % 30\% 30% 的数据, 1 ≤ N ≤ 10 , 000 1 ≤ N ≤ 10,000 1N10,000 0 ≤ M ≤ 1 , 000 0 ≤ M ≤ 1,000 0M1,000
  • 对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 100 , 000 1 ≤ N ≤ 100,000 1N100,000 0 ≤ M ≤ 10 , 000 0 ≤ M ≤ 10,000 0M10,000

序列中整数的绝对值不超过 1 0 9 10^9 109,序列中的数可能有重复。

思路详解

由于我们要求中位数,若当前序列的长度 n n n为奇数,则我们需要求排序后位于第 n / 2 + 1 n/2+1 n/2+1。若为奇数,则求 m i n ( n / 2 , n / 2 + 1 ) min(n/2,n/2+1) min(n/2,n/2+1)。不管求第几个,我们都要实现如下操作:

  1. 自动排序。
  2. 查找第 k k k个元素。

我们直接平衡树启动。每次记录一下序列长度。

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct lit{ll val,pri,siz;lit *l,*r;lit(ll v){val=v;pri=rand();siz=1;l=r=nullptr;}
};
class FHQ_Treap{//FHQ无旋平衡树
private:lit *root;ll getsize(lit *u){return u?u->siz:0;}//安全访问sizevoid pushup(lit *&u){//更新当前节点的siz值if(!u)return ;u->siz=1+getsize(u->l)+getsize(u->r);}void split(lit *u,ll v,lit *&x,lit *&y){//分裂if(!u){x=y=nullptr;return;}if(u->val<=v){x=u;split(u->r,v,x->r,y);pushup(x);}else{y=u;split(u->l,v,x,y->l);pushup(y);}}lit *merge(lit *x,lit *y){//合并if(!x)return y;if(!y)return x;if(x->pri>y->pri){x->r=merge(x->r,y);pushup(x);return x;}else {y->l=merge(x,y->l);pushup(y);return y;}}lit *getkth(lit *u,ll k){//求第k个元素if(!u)return nullptr;ll ls=getsize(u->l);if(ls+1<k)return getkth(u->r,k-ls-1);else if(k<ls+1)return getkth(u->l,k);return u;}
public:void insert(ll v){//加入一个节点lit *l,*r;split(root,v,l,r);root=merge(merge(l,new lit(v)),r);}ll kth(ll k){//封装lit *p=getkth(root,k);return p->val;}
}tr;
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n;int len=0;cin>>len;for(int i=1;i<=len;i++){int x;cin>>x;tr.insert(x);}cin>>n;for(ll i=1;i<=n;i++){string op;int x;cin>>op;if(op=="add"){cin>>x;tr.insert(x);len++;}else{int ans;if(len%2==0){//为偶数ans=min(tr.kth(len/2),tr.kth(len/2+1));}//为奇数else ans=tr.kth(len/2+1);cout<<ans<<'\n';}}return 0;
}
http://www.dtcms.com/wzjs/59732.html

相关文章:

  • java做网站有什么优势西安百度搜索排名
  • 公司网站建设上海找谁长沙网站到首页排名
  • 卖主机网站seo专员是干什么的
  • 怎么手动安装网站程序上海牛巨仁seo
  • 佛山南海区建网站的公司网站快速优化排名官网
  • 四面山网站建设网络营销和传统营销的区别有哪些
  • 网站的开发与建设项目廊坊网站排名优化公司哪家好
  • 国外优秀企业网站设计搜索引擎平台排名
  • 导航网站制作网站seo的优化怎么做
  • 桂林做手机网站大连网站建设
  • 小程序官网登录入口seo常用工具网站
  • 临朐网站优化网络营销推广方法十种
  • 做网站包括什么网站建设选亿企网络
  • 网站建设需要收集资料吗网络营销策略分析报告
  • 校园网站建设管理及责任表百度关键词优化系统
  • 做网站这个工作怎么样做网页的网站
  • 永久免费ppt下载网站网址查询注册信息查询
  • 海南网站优化公司霸榜seo
  • 免费做字体的网站好中国站长之家域名查询
  • 枣庄学习建设网站培训网站打开速度优化
  • 网站建设 有限公司2021最火营销方案
  • 百度快速查询广西网络优化seo
  • 徐典超 网站建设百度首页推荐关不掉吗
  • python 做视频网站怎么在百度上推广
  • 简单的网站注册流程图重庆seo怎么样
  • 网站建设制作价格关键词优化公司如何选择
  • 北京赛车手机网站建设免费平台推广
  • 网站开发 简单谷歌搜索引擎下载安装
  • 商丘做网站推广网络营销型网站
  • wordpress 主图截图杭州排名优化公司电话