[BZOJ4504][主席树]K个串

MacBook用户必看:用Homebrew一键搞定frp内网穿透(含阿里云配置模板) 本文为MacBook用户提供基于Homebrew的frp内网穿透实战指南,详细介绍了从环境准备到阿里云服务器配置的全过程。通过Homebrew一键安装frp客户端,结合阿里云配置模板,实现高效稳定的内网穿透,适用于远程开发、IoT设备调试等多种场景。 阅读详情

只区间出现一次的数就是上一次出现在位置在区间外的数,这个可以用主席树实现,然后套用超级钢琴的思想就可以了。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <map>
#include <queue>

using namespace std;

const int N=100010;

typedef long long ll;
typedef pair<ll,int> parli;

int n,k,cnt,a[N],lst[N],rt[N];
int ls[N*50],rs[N*50];
ll add[N*50];
parli mx[N*50];

struct stp{
  ll val; int l,r,p,x;
  friend bool operator <(stp a,stp b){
    return a.val<b.val;
  }
};

map<ll,int> A;
priority_queue<stp> Q;

void Add(int lg,int &g,int l,int r,int x,int L,int R){
  g=++cnt; mx[g]=mx[lg]; ls[g]=ls[lg]; rs[g]=rs[lg]; add[g]=add[lg];
  if(l==L&&r==R){
    mx[g].first+=x; add[g]+=x;
    return ;
  }
  int mid=L+R>>1;
  if(r<=mid) Add(ls[lg],ls[g],l,r,x,L,mid);
  else if(l>mid) Add(rs[lg],rs[g],l,r,x,mid+1,R);
  else Add(ls[lg],ls[g],l,mid,x,L,mid),Add(rs[lg],rs[g],mid+1,r,x,mid+1,R);
  mx[g]=max(mx[ls[g]],mx[rs[g]]); mx[g].first+=add[g];
}

parli Query(int g,int l,int r,int L,int R){
  if(!g) return parli(-1e9,0);
  if(l==L&&r==R) return mx[g];
  int mid=L+R>>1; parli ret;
  if(r<=mid) ret=Query(ls[g],l,r,L,mid);
  else if(l>mid) ret=Query(rs[g],l,r,mid+1,R);
  else ret=max(Query(ls[g],l,mid,L,mid),Query(rs[g],mid+1,r,mid+1,R));
  ret.first+=add[g]; return ret;
}

void Build(int &g,int l,int r){
  g=++cnt;
  if(l==r){ mx[g].first=0; mx[g].second=r; return; }
  int mid=l+r>>1;
  Build(ls[g],l,mid); Build(rs[g],mid+1,r);
  mx[g]=max(mx[ls[g]],mx[rs[g]]);
}

int main(){
  scanf("%d%d",&n,&k);
  for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
    if(A.count(a[i])) lst[i]=A[a[i]];
    A[a[i]]=i;
  }
  Build(rt[0],1,n);
  for(int i=1;i<=n;i++){
    rt[i]=rt[i-1];
    Add(rt[i-1],rt[i],lst[i]+1,i,a[i],1,n);
    parli q=Query(rt[i],1,i,1,n);
    Q.push((stp){q.first,1,i,q.second,i});
  }
  for(int i=1;i<k;i++){
    stp cur=Q.top(); Q.pop();
    if(cur.l==cur.r) continue;
    parli q;
    if(cur.l<cur.p){
      q=Query(rt[cur.x],cur.l,cur.p-1,1,n);
      Q.push((stp){q.first,cur.l,cur.p-1,q.second,cur.x});
    }
    if(cur.p<cur.r){
      q=Query(rt[cur.x],cur.p+1,cur.r,1,n);
      Q.push((stp){q.first,cur.p+1,cur.r,q.second,cur.x});
    }
  }
  printf("%lld\n",Q.top().val);
  return 0;
}
蓝牙攻防实战:蓝牙技术详解 蓝牙作为轻量级、低功耗的无线通信技术,其设计兼顾了效率与灵活性,但也留下了诸多安全隐患。随着物联网设备的爆发式增长,蓝牙的攻击面也在不断扩大。理解其底层通信机制、协议栈结构以及配对加密逻辑,是提升无线安全防护能力的关键。 阅读详情

相关推荐

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少,这里还是做一下当初的学习记录。

weixin_51651698的博客 6万+

bzoj 4504: K个串 主席树

首先来看如何快速求出区间[l,r]的答案。预处理pre[i]表示和a[i]相同的数上一次出现的位置,如果a[i]第一次出现则per[i]=0。那么[l,r]的答案就相当于求[l,r]中所有pre[]        因此可以构建主席树,第i棵树表示右坐标为i时,里面节点[u,v]的值就是左端点在[u,v],右端点为i时的最大值。那么可以发现第i棵树相对于第i-1棵树只有pre[i+1]~i的每一个

lych的博客 2009

从SPI到JTAG:玩转FT2232H的MPSSE多协议切换指南(附配置代码)

本文详细介绍了如何利用FT2232H芯片的MPSSE技术实现SPI与JTAG协议的无缝切换,提供配置代码和调试技巧。通过解析MPSSE引擎架构和硬件特性,帮助开发者灵活应对多种串行协议需求,提升嵌入式开发效率。特别适合FPGA调试和物联网设备开发场景。

sun99的博客 254

【题解】「BZOJ4504」K个串

考虑二分答案 233 如果子树 max⁡\maxmax 都不能作为答案的话,就直接返回。 每找到一个叶节点就统计一次次数。 空间复杂度 O(nlogn)O(n\text{log}n)O(nlogn) 。 时间复杂度 O((n+klogn)logN)O((n+k\text{log}n)\text{log}N)O((n+klogn)logN) 。 #include<bits/stdc++.h> #define ll long long using namespace std; const int N

cqbzlydd的博客 754

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 255

乐视三合一体感摄像头--基本信息及windows下部分开发

乐视三合一体感摄像头--基本信息及windows下部分开发Introduction基本信息Windows下使用安装驱动使用openNI使用imageJ调用RGB图像Q:参考资料 Introduction       乐视三合一体感摄像头是乐视对标kinect,做的一款3D体感摄像头;设计目的为用于电视机上体感使用的,包括其USB结构都是为了符合电视机直接操作的,同时是支持相应的游戏操作;但是自从乐视倒闭之后,价格从之前标价899降到了现在140+左

GRF-Sunomikp31 1万+

【BZOJ4504】K个串(优先队列,可持久化线段树)

Description 兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。 兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第k大的和是多少。 Input 第一行,两个整数n和k,分别表示长度为n的数字序列和想要统计的第k大的和 接下里一行n个数a_i,表示这个数字序列 Output 一行一个整数,表示第k大的和 设 f(i,j)f(i,j)f(i,j) 表示以 iii.

ez_lcw的博客 455

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 550

bzoj4504: K个串【主席树区间操作+优先队列】

Description 兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一 个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。 兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第 k大的和是多少。 Input 第一行,两个整数n和k,分别表示长度为n的数字序列和想要统计的第k大的和 接下里一行n...

cdsszjj的博客 660

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 866

【Spring源码三千问】哪些循环依赖问题Spring解决不了?

哪些循环依赖问题Spring解决不了?前言版本约定正文场景一: prototype 类型的循环依赖场景二: constructor 注入的循环依赖场景三:Proxy 类型的 Bean 的循环依赖小结 系列博文: 【老王读Spring IoC-0】Spring IoC 引入 【老王读Spring IoC-1】IoC 之控制反转引入 【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册 【老王读Spring IoC-3】Spring bean 的创建过程 【老王读Spring I

老王的专栏 7318

bzoj 4504 - 主席树+区间修改

题目链接:https://darkbzoj.cf/problem/4504   解题思路: 题目跟洛谷P2048 差不多,主要差在区间数只能统计一次,洛谷那题区间一样的数可以重复统计. 那么就可以用pre[i]表示i这个数上一次出现的位置在哪,那么对于新的主席树更新区间就是(pre[i],i),之后的操作与洛谷P2048几乎相同 https://blog.youkuaiyun.com/a121403...

过路人丶的博客 858

【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

在人工智能的浪潮中,大型语言模型(LLMs)正逐渐成为研究和应用的热点。它们在自然语言处理(NLP)的各个领域,如文本生成、翻译、问答等任务中展现出了卓越的能力。Qwen2-7B模型,作为该领域的佼佼者,不仅因其庞大的参数量和强大的表示能力受到关注,更因其在微调后能够更好地适应特定任务而备受关注。本文将详细介绍如何利用LLaMA-Factory这一高效的微调框架对Qwen2-7B进行微调,以期达到提升模型在特定任务上的表现。

寻道AI,探索AI无限可能! 2万+

bzoj 4504: K个串【大根堆+主席树】

像超级钢琴一样把五元组放进大根堆,每次取一个出来拆开,(d,l,r,p,v)表示右端点为d,左端点区间为(l,r),最大区间和值为v左端点在p上 关于怎么快速求区间和,用可持久化线段树维护(主席树?)每个点到他root的区间和,这样每次右端点右移就是上一个的线段树在(la[a[i]]+1,i)加上a[i],la是这个值a[i]上一次出现的位置 然后就可以在线处理询问了 有一点因为这个线段树建的是1...

weixin_30565327的博客 128

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

BZOJ4504. K个串(主席树+优先队列)

懒标记跟主席树狼狈为奸!

256

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

bzoj4504 K个串(主席树+堆)

很类似bzoj2006。 只是这次的区间和比较难算,我们需要建主席树来求。 rt[i]的每个叶节点x,表示右端点为i时左端点为x时的答案。 每个节点要维护区间最大值,及最大值所在位置。 我们有两种操作,区间加和查询区间最大值。 区间加的主席树比较麻烦。下放时要新建节点太慢了。 我们可以考虑标记永久化。不下放标记。 然后类似超级钢琴那题用堆来维护贪心就好啦。 或者也可以每次去删掉最大...

Icefox的博客 387

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【BZOJ】4504 K个串 主席树+堆

题目传送门 一个晚上就做了这么一道题……好颓啊…… 首先我们可以对于每个aia_i维护一个pre[ai]pre[a_i]表示在它之前与他最近的相同的数的位置。 然后对于每个aia_i,在(pre[ai],i)(pre[a_i],i)这个范围内都加上aia_i,可以用主席树。 题目要求kk个区间不相同,这就是“超级钢琴”的模型,套上超级钢琴的套路就行了。 附上AC代码: #inclu

Chester King 330

BZOJ 4504:K个串 [主席树][贪心]

题意 给出一个长度为nn的数列an{a_n},一个区间[l,r][l,r]的和定义为其中的数字之和,相同的数字不重复算 求第k大的和 题解 首先怎么求一个区间的和.对于aia_i维护它之前最近的与它相同的数的位置pre[ai]pre[a_i] 对于固定的右端点维护每一个左端点到它的和,可以用线段树 则从左往右扫描对于右端点ara_r只要把pre[ar]+1pre[a_r]+1到rr

sillyf的博客 367

bzoj : 4504: K个串 区间修改主席树

4504: K个串 Time Limit:20 SecMemory Limit:512 MBSubmit:268Solved:110[Submit][Status][Discuss] Description 兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一 个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。 ...

weixin_30419799的博客 114

bzoj4504 K个串 (优先队列+主席树)

首先如果没有出现次数的限制的话,这题就是超级钢琴 但由于有了这个限制,不能简单地用前缀和 考虑顺着做的时候每个点的贡献,如果a[i]=x,x上次出现位置是lst[x](可以用一个map来记),那它会给右端点为[i,N],左端点为[lst[x]+1,i]的区间带来x的贡献 根据szr巨佬的说法,主席树的本质就是前缀和套线段树,所以我们如果按区间的右端点建主席树的根,每颗线段树内部存每个位置作为...

weixin_30375427的博客 132

BZOJ4504 K个串

考虑如果他是m组询问,每组询问问一个子串的数字之和的话怎么搞 我们可以离线然后按右端点排序,然后枚举右端点,用一个线段树维护当前每个左端点的答案,假设现在右端点从i-1挪到i,第i个位置的数是x,那么x对答案的贡献是从x上一次出现的地方+1到i之间区间+x 然后我们考虑这道题,由于k比较小,我们可以先算最大的,再算第二大的,一直算到第k大的 为了知道每个子串的数字的和,我们用主席树来维护上边

neither_nor 1336

[bzoj P4504] K个串

[bzoj P4504] K个串 【题目描述】 兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。 兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第k大的和是多少。 【输入格式】 第一行,两个整数n和k,分别表示长度为n的数字序列和想要统...

a8233821的博客 228

bzoj4504 K个串

这个题咕了快一年了。。。。。 其实并不难 题目很苟,就是子串的和定义为数字和(出现多次算一次) 连续子段、第k大? 我们想起了NOI2010]超级钢琴 如何快速查询下一个最大值? 以r为结尾统计,主席树维护l位置答案! 1.n棵主席树。第r个主席树,每个叶子结点li维护 li~r的和。其他节点维护子树的和的mx 到r+1时,区间[las[a[r+1],r+1]加上a[r+1]...

weixin_30470643的博客 99
上一篇: [LOJ#2290][THUWC 2017][概率][状压][DP][陈老师神题]随机二分图
下一篇: [LOJ#6159][美团 CodeM 初赛 Round A][暴力即正解]最长树链
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值