poj 2985 树状数组+并查集(第k大组数)

基于STM32开发的智能语音控制系统 本文将介绍如何使用STM32微控制器开发一个智能语音控制系统,通过语音识别模块、OLED显示屏、Wi-Fi模块等实现对家用电器或其他设备的语音控制。智能语音控制系统的核心是STM32微控制器,通过语音识别模块识别用户的语音指令,并根据指令控制家用电器或其他设备。:定期测试语音识别模块、继电器控制模块、OLED显示屏和Wi-Fi模块的工作状态,确保系统能够在各种情况下正常运行,并保持智能语音控制系统的可靠性。本系统同样适用于办公环境,可以通过语音指令控制办公室设备,如照明、空调等,提供智能化的办公体验。 阅读详情

题意:一开始有n个数,有两种操作,0 a b表示将a所在组和b所在组合并,1 a表示查询当前的第k大组数有多少个。

思路:合并集合很简单用并查集即可。查询的方法是:用树状数组记录数集中某个数出现次数,即tree[i]表示含有i个数的组有多少个。查找的时候二分即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdlib>
using namespace std;
#define clc(s,t) memset(s,t,sizeof(s))
#define INF 0x3fffffff
#define N 200005
int f[N],num[N],tree[N];
int n,q;
int lowbit(int x){
    return x&(-x);
}
void add(int i,int x){
    for(int j = i;j<=n;j+=lowbit(j))
        tree[j] += x;
}
int sum(int x){
    int i,res=0;
    for(i = x;i>=1;i-=lowbit(i))
        res += tree[i];
    return res;
}
int find(int x){
    if(f[x] == x)
        return x;
    return f[x] = find(f[x]);
}
int main(){
    clc(tree, 0);
    scanf("%d %d",&n,&q);
    for(int i = 1;i<=n;i++){
        f[i] = i;
        num[i] = 1;
    }
    add(1, n);
    while (q--) {
        int i,j,cmd,a,b,low,high,mid;
        scanf("%d",&cmd);
        if(cmd){
            scanf("%d",&a);
            low = 1;        //二分找第a大数
            high = n;
            while(low < high){
                mid = (low+high)>>1;
                j = sum(n)-sum(mid);
                if(j < a)
                    high = mid;
                else
                    low = mid+1;
            }
            printf("%d\n",low);
        }else{
            scanf("%d %d",&a,&b);
            i = find(a);
            j = find(b);
            if(i == j)      //一开始没加这个,贡献了WA
                continue;
            add(num[i], -1);
            add(num[j], -1);
            add(num[i]+num[j], 1);
            f[i] = j;
            num[j] += num[i];
        }
    }
}


从零构建AI智能体:阿里云百炼平台实战指南(一) 本文是阿里云百炼平台构建AI智能体的实战指南。文章详细阐述了从聊天机器人到具备自主规划与执行能力的AI智能体的概念演进,并手把手指导读者在百炼平台上快速创建专属智能体、编排复杂工作流,以及实现多智能体协同,为开发者提供一站式、低门槛的大模型应用开发解决方案。 阅读详情

相关推荐

2D Nesting Defining a CSV File of Part Data

若。

qq_36560674的博客 1834

POJ--2985(树状数组 / Treap +并查集)

2015-03-1619:52:57 思路:一道比较裸的插入不断插入数值、删除数值 + 查询第k大的题目。   (1)对于合并操作,可以采用并查集来维护,并维护一个num值来表示group总数。   (2)对于查询第k大的操作     (i)可以用树状数组维护+二分查找来不断逼近第k大     (ii)可以利用树状数组本身c[]数组的特性来倍增逼近第k大     (iii)...

dingdi3021的博客 267

解决ADS1.2报错Cannot obtain license

报错如下 将licenses文件下的license内容进行修改: 修改为如下内容即可。 # # Generated on 2021-dec-1 by licwizard # PACKAGE ads armlmd 1.200 E32F0DE5161D COMPONENTS="armasm compiler bats armulate axd adwu fromelf armlink codewarrior armsd" INCREMENT ads armlmd 1.200 permanent uncounte

qq_46110320的博客 3461

POJ-2985(树状数组 + 并查集 + 二分)

题目:http://poj.org/problem?id=2985 这题考察了两个点呢,组合并用到了并查集,求第K大的数用到了树状数组,刚开始WA了几次,发现是在组合并之后仅仅update(*, -1)了一次,因为是删除了两个组增加了一个组,应该是update(*, -1)两次,不细心啊。。。 #include #include #include using namespace

还有多远 603

Ansys Zemax | 利用OpticStudio实现衍射光学元件(DOE)与超透镜(metalens)的高效建模与验证

本文详细介绍了如何利用Ansys Zemax的OpticStudio软件实现衍射光学元件(DOE)与超透镜(metalens)的高效建模与验证。通过混合建模策略、相位面等效建模法、POP与FDTD联合验证等多种方法,帮助工程师快速解决跨尺度仿真难题,提升设计效率与精度。文章还分享了实战案例与高级技巧,适用于AR、医疗内窥镜等应用场景。

weixin_29268331的博客 499

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

树状数组求第k大值

以POJ 2985为例,具体的写在程序里。思路都是基于二分的思想。 下面是(LogN)^2的方法 /* 题意:某人养了很多猫,他会把一些猫合并成一组,并且会询问第k大组有几只猫 算法:处理集合用并查集,动态更新第K值用树状数组,具体的看注释 2011-07-21 19:59 */ #include #define MAXN 300000 int a[MAXN

z309241990的专栏 4762

YOLOv13安装教程 手把手教你融合空间注意力机制(SAB)的RAB卷积模块 自动“聚焦”重要的特征 map指标提升8.96,准确率提升3.56

本文提出了一种改进的YOLOv13目标检测模型,通过引入RAB(残差注意力模块)显著提升了检测性能。实验结果显示,添加RAB模块后,mAP指标提升了8.96,准确率提高了3.56%。文章详细介绍了RAB模块的实现方法:1)采用多级残差连接增强特征提取能力;2)结合空间注意力机制(SAB)自动聚焦关键区域;3)通过1×1卷积实现通道维度压缩与恢复。同时提供了完整的模型移植方案,包括配置文件修改、任务处理代码调整以及模块实现细节,为YOLO系列模型的性能优化提供了有效参考。

FJN110的博客 646

POJ2985 (线段树+并查集)

题目链接:http://poj.org/problem?id=2985 题意:输入n(猫的数量)和m(操作的总数),求分组以及合并操作后,第K大的组的规模大小 解题思路:并查集+线段树 Source Code /*以分组的规模作为划分线段的标准 有n只猫则可能存在的分组中规模最大的为n,规模最小的为1 tree[k]表示规模为tree[k].left---tree[

Below_Crusder的博客 856

SST专题(2-4)MMC-SST 输入级的环流分析

本文分析了模块化多电平换流器(iMMC-SST)的输入级等效电路、子模块电容电压波动特性及环流抑制机理。研究表明:1)子模块电容电压波动包含基频和二倍频分量,与传统换流器相比波动幅值更大;2)环流主要由子模块电容电压波动在桥臂电感上激发的偶次谐波电流构成,呈频率越高幅值越小的特性;3)可通过增大桥臂电感或采用调制策略叠加抑制电压分量来有效控制环流。研究结果为MMC系统设计提供了理论依据。

嵌入式老牛的博客 585

CoppeliaSim和Python进行无人机联合仿真

CopeeliaSim和Python进行无人机轨迹跟踪联合仿真。首先建立起CoppeliaSim和Python的连接,其次在Python中生成轨迹,CoppeliaSim仿真环境中的无人机进行跟踪,并绘制出轨迹曲线,有每一步详细的教学。

加斯顿工程师的博客 986

POJ-2985-The k-th Largest Group

第一次用树状数组求第k大值,其实思想就是统计比现在小的个数,然后用二分进行查找, 感觉比划分树简单多了 代码: #include #include #include using namespace std; const int maxn=200010; int n,m,t[maxn],p[maxn],num[maxn]; int find(int x) { if(p[x]==-1)

z309241990的专栏 879

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1156

POJ 2985 【并查集+树状数组第K大】

POJ 2985 【并查集+树状数组第K大】 题目链接 题意:给你猫的编号1-n,m次操作,0操作可以把两只猫放到一组,1操作询问猫的当前第K大组的容量是多少。 **思路:**首先0操作可以利用并查集的合并操作,用一个size数组纪录组的容量,每次合并的时候就更新size,那么查询第K大用什么来记录呢?主席树?不不不,今天要说的是树状数组,树状数组求第K大??? 其实就是个板子,利用树状数组前缀和...

qq_43653111的博客 343

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj 2985 The k-th Largest Group 并查集+树状数组求第k大

题意大概是:两种操作,合并集合,求元素第k多的集合有多少个元素 集合的合并就用并查集,同时维护一个数组tol表示该集合中的元素个数 树状数组,存值为i的个数,sum(i)表示值小于等于i的个数 树状数组求第k大,用二分法即可 #include #include const int MAX = 200010; int b[MAX]; int a[MAX],tol[MAX]; int n,

renew 1462

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【树状数组求第k小+并查集】POJ 2985

http://poj.org/problem?id=2985 树状数组已经够神奇了,原来它还可以求第k小的元素........orz,位运算V5! #define N (1<<20) int c[N],rank[N],fa[N]; int n,m; void init(){ int i; for(i=1;i<N;i++){ c[i] = 0;

leolin_的专栏 1294

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

poj_2985 The k-th Largest Group 树状数组求第K大

前面说了树状数组的三个用途, 在

e的专栏 748

POJ 2985 Treap平衡树(求第k大的元素)

这题也可以用树状数组做,而且树状数组姿势更加优美,代码更加少,不过这个Treap树就是求第K大元素的专家……所以速度比较快! 这个也是从那本红书上拿的模板……自己找了资料百度了好久,才理解这个Treap基本的知识,要是自己写真的得写到什么时候啊!!! 然后输入的时候是写n-k+1反着找的,就是这里又浪费了好多时间debug,唉…… #include #include #include

liwei的专栏 2568

poj 2985 The k-th Largest Group(线段树+并查集)

题目链接http://poj.org/problem?id=2985 题意: 有N只猫,刚开始每只猫各自在不同的集合,现在给出M个操作,有两种操作:   1.把第i只猫和第j只猫所在集合合并。   2.查找第i大的集合内有多少只猫。 思路: 操作一,集合合并很容易想到并查集。 操作二,如果每次合并之后进行查找直接遍历一遍,效率O(n^2),很容易超时。所以可以考虑

To be excellent! 337

POJ 2985:The k-th Largest Group 树状数组求第K小的元素

The k-th Largest Group Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8278   Accepted: 2692 Description Newman likes playing with cats. He possesses lots

207

poj2985The k-th Largest Group

链接:http://poj.org/problem?id=2985 题意:初始给定n个元素个数为1的集合,然后给定m个操作,有两种操作:C=0时输入a,b表示将a,b所在的集合合并成一个集合,C=1时输入k表示询问当前所有集合中集合大小排序中的第k大的集合的size。 分析:集合合并直接用并查集维护就可以了,找第k大的话用树状数组找第k大就好了。 代码: #include #include

Fsss 457

(POJ-2985)The k-th Largest Group(并查集+树状数组)

题目链接:2985 -- The k-th Largest Group 大致题意:就是一开始给你n个集合,每个集合里面有一个元素,然后有m次操作,每次操作有两种可能,一种是查询当前所有集合中第k大的集合的大小,也就是所有集合内部的元素个数第k大的集合的元素个数,另一种是合并某两个集合,合并后的集合将变为原来两个集合的大小之和,只有进行询问操作时会给出输出。 分析:看到合并集合我们不难想到用并查集来解决,除此之外我们还需要用一个数组cnt来维护每个集合的大小,当然这都是一些较为基础的想法,在这里再提醒

AC__dream的博客 386

POJ2985_The k-th Largest Group(树状数组)

转自:https://www.cnblogs.com/wuyiqi/archive/2011/12/25/2301071.html 题意: 首先给你N只老鼠,M个操作;最开始一只老鼠一个组; 输入0,输入两个数i,j;使得i老鼠与j老鼠的组合并; 输入1,输入一个数K,求第K大的组有多少只老鼠。 思路: 第K大就是第n-k+1小,用树状数组求第K小。 觉得:https://www.cnblogs....

CY05627的博客 393

POJ2985 The k-th Largest Group

并查集 + 树状数组求第k #include #include #include using namespace std; int const MAXN = 200010; int n,m; int c[MAXN],father[MAXN],cnt[MAXN]; void Init(){     for(int i = 1;i         father[i] = i;

z8853797的专栏 720

POJ 2985 The k-th Largest Group

题目链接:POJ 2985 The k-th Largest Group 并查集 + 树状数组。 主要考察点是用树状数组求第k小的数。其中用到了二分法。 #include #include #include using namespace std; const int MAX_N = 200000 + 100; int n,m; int num[MAX_N],p[MAX_N],a[

fobdddf的专栏 655

poj2985 The k-th Largest Group 【树状数组求第K大】

链接:http://poj.org/problem?id=2985 题意:给你n,m,代表有n个集合,开始每个集合大小为1,接下来m个操作,每个操作先输入c,c==0则将x,y集合合并,c==0,输出第k大。 分析:集合和并可以用并查集,然后求第k大直接用树状数组。 代码: #include #include #include #include #include #include #inc

Fb_by 885
上一篇: poj 1915/2243 bfs(马走日)
下一篇: poj 2602 大数相加(字符串输出)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值