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

[洛谷P3567][POI2014]KUR-Couriers

题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半。有,输出这个数,否则输出$0$

题解:主席树,查询区间第$\bigg\lfloor\dfrac{len+1}{2}\bigg\rfloor$大,并判断它出现次数是否大于$\Big\lfloor\dfrac{len}{2}\Big\rfloor$

卡点:

 

C++ Code:

#include <cstdio>
#define maxn 500010
#define N (maxn * 22)
int n, m;
int root[maxn];
int sz[N], lc[N], rc[N], idx;
void insert(int &rt, int l, int r, int num) {
	lc[++idx] = lc[rt], rc[idx] = rc[rt], sz[idx] = sz[rt] + 1, rt = idx;
	if (l == r) return ;
	int mid = l + r >> 1;
	if (num <= mid) insert(lc[rt], l, mid, num);
	else insert(rc[rt], mid + 1, r, num);
}
int query(int L, int R, int l, int r, int k, int len) {
	if (l == r) {
		if (sz[R] - sz[L] > len / 2) return l;
		return 0;
	}
	int mid = l + r >> 1, SZ = sz[lc[R]] - sz[lc[L]];
	if (k <= SZ) return query(lc[L], lc[R], l, mid, k, len);
	else return query(rc[L], rc[R], mid + 1, r, k - SZ, len);
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1, x; i <= n; i++) {
		scanf("%d", &x);
		root[i] = root[i - 1];
		insert(root[i], 1, n, x);
	}
	while (m --> 0) {
		int l, r;
		scanf("%d%d", &l, &r);
		printf("%d\n", query(root[l - 1], root[r], 1, n, r - l + 2 >> 1, r - l + 1));
	}
	return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9923292.html

相关文章:

  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 以太坊分片:Overview and Finality
  • MySQL自定义函数递归查询父节点和子节点
  • “加息”道路越走越窄,小牛在线需主动自省求变
  • Cetos 7 防火墙设置
  • 阿里云 Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid password
  • 职场思想分享003 | 如何能让自己说话办事考虑的更周到?
  • Docker Enterprise 2.1 版本正式上线,全新特性先睹为快!
  • 【Zabbix】如何使用Zabbix进行IPMI监控?
  • Auto Encoder用于异常检测
  • 简单读!spring-mvc源码之url的暴露之路
  • DNS域名解析之搭建公司内部域--技术流ken
  • 认识CoreData - 初识CoreData
  • 对import的理解,python中的package和module概念
  • linux统配符
  • 【前端学习】-粗谈选择器
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • CSS相对定位
  • dva中组件的懒加载
  • ES6简单总结(搭配简单的讲解和小案例)
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascript弹出层-初探
  • js继承的实现方法
  • Mysql数据库的条件查询语句
  • react 代码优化(一) ——事件处理
  • STAR法则
  • web标准化(下)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 不上全站https的网站你们就等着被恶心死吧
  • 来,膜拜下android roadmap,强大的执行力
  • 每天一个设计模式之命令模式
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 三分钟教你同步 Visual Studio Code 设置
  • 事件委托的小应用
  • 说说动画卡顿的解决方案
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​力扣解法汇总946-验证栈序列
  • #DBA杂记1
  • (2)STL算法之元素计数
  • (超详细)语音信号处理之特征提取
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)fock函数详解
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***详解账号泄露:全球约1亿用户已泄露
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 药厂业务系统 CPU爆高分析
  • .net反编译的九款神器
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • [BJDCTF2020]The mystery of ip
  • [bzoj1912]异象石(set)