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

CF 840 D

CF 840 D

clf大佬告诉我,直接主席树是\(n\times \log(n)\)

这是为什么呢.

首先最多有5个叶子节点是出现次数大于等于\(n\over 5\)哒,然后上述叶子也可能不是叶子啊.

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int MAXN=300000;
const int INF=0x3f3f3f3f;
struct Node{int w,lc,rc;};
int n,q;
int root[MAXN+10];
Node t[20*MAXN+10];int tot;
void insert(int& o,int l,int r,int q)
{
    t[++tot]=t[o];o=tot;
    if(l==r){++t[o].w;return;}
    int mid=(l+r)>>1;
    if(q<=mid)insert(t[o].lc,l,mid,q);
    else insert(t[o].rc,mid+1,r,q);
    t[o].w=t[t[o].lc].w+t[t[o].rc].w;
}
int query(int o1,int o2,int l,int r,int q)
{
    if(l==r)return l;
    int mid=(l+r)>>1,res=INF;
    if(t[t[o2].lc].w-t[t[o1].lc].w>=q)res=min(res,query(t[o1].lc,t[o2].lc,l,mid,q));
    if(t[t[o2].rc].w-t[t[o1].rc].w>=q)res=min(res,query(t[o1].rc,t[o2].rc,mid+1,r,q));
    return res;
}
int main()
{
    scanf("%d%d",&n,&q);
    for(int i=1,a;i<=n;++i)
    {
        scanf("%d",&a);
        root[i]=root[i-1];
        insert(root[i],1,n,a);
    }
    while(q--)
    {
        int l,r,k,res;
        scanf("%d%d%d",&l,&r,&k);
        res=query(root[l-1],root[r],1,n,(r-l+1)/k+1);
        printf("%d\n",res>=INF?-1:res);
    }
    return 0;
}

转载于:https://www.cnblogs.com/DOlaBMOon/p/7517496.html

相关文章:

  • 初识oracle存储过程
  • 大数据竞赛平台Kaggle案例实战
  • 我的Hibernate学习记录(一)
  • Java 读写Properties配置文件
  • 输出斐波那契数列前20项,每输出5个数换行
  • MySQL5.6安装步骤
  • 【转载】max/min函数的用法
  • Linux-Ubuntu下配置telnet环境
  • linux下git常用命令
  • 通过命令行操作MYSQL的方法 以及导入大的SQL备份文件
  • 简单的java socket 示例
  • anu - children
  • 嵌入式开发学习(10)汇编写启动代码之设置栈、调用c语言、开关看门狗和开关iCache...
  • 345. Reverse Vowels of a String
  • jQuery 判断终端是IOS还是Android / jQuery处理背景图片不能撑满屏幕
  • Google 是如何开发 Web 框架的
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Docker 笔记(2):Dockerfile
  • ES6 学习笔记(一)let,const和解构赋值
  • export和import的用法总结
  • Facebook AccountKit 接入的坑点
  • HashMap ConcurrentHashMap
  • Java 最常见的 200+ 面试题:面试必备
  • Mithril.js 入门介绍
  • ReactNativeweexDeviceOne对比
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 电商搜索引擎的架构设计和性能优化
  • 反思总结然后整装待发
  • 警报:线上事故之CountDownLatch的威力
  • 如何胜任知名企业的商业数据分析师?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 @font-face
  • 使用agvtool更改app version/build
  • 一个项目push到多个远程Git仓库
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #Z2294. 打印树的直径
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (算法设计与分析)第一章算法概述-习题
  • (一)Neo4j下载安装以及初次使用
  • (原創) 物件導向與老子思想 (OO)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core 成都线下面基会拉开序幕
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net 应用中使用dot trace进行性能诊断
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [20190113]四校联考
  • [Angular 基础] - 指令(directives)
  • [Angular] 笔记 20:NgContent