HDOJ 4638: Group

VLOOKUP_fixed.py 立即下载

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638


题目大意:

给定一个序列,是1~n的一个排列。

每次查询一个区间,问这个区间中含有多少个子集,自己中的序号是连续递增的(顺序可打乱)。

例如区间1,5,3,2可以分成1,2,3和5。


算法:

不难看出一个点只能影响两个点,也只能被两个点影响。

我们先算出每个点前面有多少个点的数值跟它相邻,保存在一个数组tr[]里。

首先假设区间中的点都是间断的,那么段数等于区间长度。

当某个数与跟它相邻的数同处一个区间,那么两个段就会连接起来,段数减一。

然后把区间按左端点排列。

我们从序列的左端依次扫过去,

每处理一个点,就处理以它为做节点的所有询问。

显然我只要求出tr[]中区间右端点之前的所有值之和,就知道了段数要减少多少。

当然,一个点已经被处理过之后,剩下的询问,一定都不再覆盖它了,它的信息就是无用的,要消去它的影响。

也就是找到位置在它之后的与它相邻的点,把相应的tr[]减去1。

当然求和肯定不能是朴素求,是用树状数组。


代码如下:

#include <iostream>
#include <cstring>
#include <stdio.h>
#include <math.h>
#include <queue>
#include <vector>
#include <algorithm>
#include <stack>
#include <map>
using namespace std;

#define ll long long
#define inf 2e9
#define pii pair<int,int>
#define st first
#define nd second

const int MAXN=110000;
int tr[MAXN],a[MAXN],pos[MAXN],ans[MAXN];
vector<pair<int,int> > mm[MAXN];
int n,m;

void add(int x, int c)
{
    while(x<=n)
    {
        tr[x]+=c;
        x+=x&(-x);
    }
}

int sum(int x)
{
    int ret=0;
    while(x)
    {
        ret+=tr[x];
        x-=x&(-x);
    }
    return ret;
}

int main()
{
    int cas;
    scanf("%d",&cas);
    for(int T=1; T<=cas; T++)
    {
        scanf("%d%d",&n,&m);
        memset(tr,0,sizeof(tr));
        for(int i=1; i<=n; i++)
        {
            mm[i].clear();
            scanf("%d",&a[i]);
            pos[a[i]]=i;
        }
        for(int i=1; i<=m; i++)
        {
            int u,v;
            scanf("%d %d",&u,&v);
            mm[u].push_back(make_pair(i,v));
        }
        for(int i=1; i<=n; i++)
        {
            if(i>1)
            {
                if(pos[i-1]>pos[i])
                {
                    add(pos[i-1],1);
                }
            }
            if(i<n)
            {
                if(pos[i+1]>pos[i])
                {
                    add(pos[i+1],1);
                }
            }
        }
        for(int u=1; u<=n; u++)
        {
            for(int i=0; i<mm[u].size(); i++)
            {
                int v=mm[u][i].nd;
                ans[mm[u][i].st]=v-u+1-sum(v);
            }
            if(a[u]>1)
            {
                if(pos[a[u]-1]>u)
                {
                    add(pos[a[u]-1],-1);
                }
            }
            if(a[u]<n)
            {
                if(pos[a[u]+1]>u)
                {
                    add(pos[a[u]+1],-1);
                }
            }
        }
        for(int i=1; i<=m; i++)
        {
            printf("%d\n",ans[i]);
        }
    }
    return 0;
}


YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

HDOJ 4638 Group

求一段区间内有几段连续的数。。。 考虑从左开始往右扫: 对于数a 如果a+1和a-1都没有那么区间段数加1;如果a+1或a-1中的一个已经在被扫过了,那么区间段数没有增加; 如果a+1和a-1都在,正好把两个数连起来区间段数-1。。 变化总和就是。。。最终的段数。 将询问离线按L排序处理,删除数a的时候,如果与a相邻的数还在后面,那么对应的变化值+1。。。。 数状数组维护即可

码代码的猿猿 1260

深入解析EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置

本文深入解析了EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置,详细介绍了六种核心控制模式(如PPM、CSP、CSV、CST)的应用场景及实战技巧。通过EtherCAT和DS402协议的高效配合,实现工业自动化中伺服电机的精准控制,提升设备性能与稳定性。

h0i1j2k3l的博客 1174

【树状数组】 HDOJ 4638 Group

离线处理,

yysys 514

保研专业课复习别瞎卷!抓住408和数学重点,用真题反推高效复习路径

本文针对计算机专业保研学生,提出以真题为导向的408专业课和数学高效复习策略。通过构建真题知识图谱、分析题型与难度矩阵,帮助考生精准把握数据结构、操作系统等核心科目的高频考点,如树与图算法、TCP/IP协议栈等,并制定科学的时间分配方案,实现短期内的快速突破。

weixin_27966471的博客 402

无刷直流电机计算转速

一个霍尔传感器周期(Tms)有两种模式输出方式(3FG/1FG),一个电周期是6个60°电角度,电机磁极数是P,磁极对数PP = P / 2 3FG模式: 1个电周期= 6 * T 1FG模式: 1个电周期= 2 * T 1秒钟电周期个数: 1分钟电周期个数: 1分钟转速: 举例: 假设电机磁极数是8,3FG模式下,霍尔周期700us,计算该条件下转速 ...

meimiaorenshengqq的博客 9673

POJ 1291: This Sentence is False

题目链接:http://poj.org/problem?id=1291 题意: 给出n句话, 形如“第x句话是错误的”或“第x句话是正确的”。 判断是否有合法结果。 若有,计算至多有多少句话是正确的。 算法: 典型的并查集。 对于每个节点,维护与父节点的距离d[x], 同一并查集内, 相对距离为偶数的节点共真假。 每处理一条关系, 若这两句话不在一个

frog的小池塘 1688

【生成数据集EXCEL文件】使用生成对抗网络GAN生成数据集:输出生成数据集EXCEL

生成器的任务是接收随机噪声向量作为输入,并尽可能生成与真实数据相似的样本,而判别器则是一个二分类器,旨在区分输入的样本是来自生成器生成的,还是来自真实数据。在训练过程中,生成器和判别器通过对抗学习的方式相互博弈,生成器的目标是生成足以欺骗判别器的样本,而判别器的目标则是尽可能准确地判断样本的真实性。GAN网络在多个领域展现了强大的能力,能够生成与训练数据分布相似的新数据,包括但不限于图像生成、图像风格转换、超分辨率、数据增强、视频生成、自然语言处理、医学图像处理以及游戏与虚拟现实等。

hustef的博客 1521

POJ 2019: Cornfields

题目链接:http://poj.org/problem?id=2019 题目大意: 给定一个N*N的矩阵, 查询若干个B*B的矩阵中最大值和最小值的差值。 算法: 由于对于每个矩阵,查询的子矩阵的大小是固定的。、 所以一看就是基础数据结构的练习。 不过我暂时没空管这个,我做这道题是为了写一个二维RMQ的模板 二维RMQ的原理也很简单。 首先像一维RMQ一样,处理出

frog的小池塘 1660

研发工作量科学量化评估模型:从多维系数到等级落地指南

摘要:本文提出了一套基于多维系数的科学量化评估模型,用于精准评估软件开发工作量。该模型从需求复杂度、技术难度、质量要求和依赖风险四个核心维度进行量化评估,通过系数乘积计算综合工作量。文章详细说明了各维度的系数区间划分标准,并演示了从基础工作量估算到综合系数计算的具体步骤。该模型通过结构化评估过程,将主观经验转化为客观量化指标,帮助团队提高工作量评估的准确性,增强项目交付的可预测性。其价值在于使评估过程透明化、结构化和可追溯,从而减少项目延期风险,优化资源规划。

友莘居士的博客 1679

从零搭建VGGNet

在 forward 方法中实现了前向传播过程,包括卷积、激活、池化和平铺操作,最后通过全连接层得到分类结果。使用 torch.onnx.export 将模型导出为 ONNX 格式的文件 vgg.onnx。导出 ONNX:将模型导出为 ONNX 格式,便于在其他平台或框架中使用。定义 VGG 网络:构建了一个包含多个卷积层、池化层和全连接层的网络。使用 torch.save 将整个模型保存为 vgg.pth 文件。前向传播:对输入数据进行前向传播,得到输出结果。保存模型:将模型保存为 .pth 文件。

开源驱动,创造价值;坦诚清晰,快速失败;让复杂可计算。 521

POJ 2827:Auto-Calculation Machine

题型很普通, 写起来有一些细节要注意, 于是记录一下。 题目链接:http://poj.org/problem?id=2827 题意: 给定一个序列, 给出一些形如(i,j,sum)的询问, 代表元素i到元素j之间的闭区间元素的和为sum。  若此询问与之前的正确询问矛盾, 则此询问错误,输出正确值。 否则此询问正确。 算法: 对于属于同一集合的元素

frog的小池塘 1541

【全局路径规划模块运动学算法】无人机Kinodynamic A*算法、Kinodynamic RRT*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Kinodynamic A*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容啃这个Kinodynamic A_star算法,建议先啃一啃高飞fast_planner那篇论文,把理论打好,如果还是比较迷,就先看Dijksta、再看A_star、再看hybrid A_star 三个的流程,因为往上资料比较多,再看这个Kinodynamic A_star算法,流程已经很相像了。如果。

qq_35635374的博客 2600

ZOJ 3717: Final Exam Arrangement

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3721 题意: 给出若干课程的上课区间, 若两门课程的上课时间不重叠,则可能有学生同时选修这两门课程,因此不能安排在一天考试。 问至少要安排多少天考试,并输出方案 算法: 线段树优化的DP 首先把课程按照结束时间排序。 对于一个课程,

frog的小池塘 1369

27、视网膜血管识别与分类的数据集和验证过程

本文介绍了视网膜血管自动识别与分类方法所使用的数据集及其验证过程。通过30张高分辨率的近红外反射视网膜图像,结合专业医生的手动标注结果,构建了包含597个血管段的基准数据集。研究采用准确率、召回率、F1分数和混淆矩阵等评估指标对模型进行验证,并提出了特征增强和分类器优化策略以提升性能。实验结果显示,该方法在复杂区域具有较强的鲁棒性和较高的准确性,为临床应用提供了可靠的依据。

i7j8k9l的博客 148

假人有限元模型

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

HDOJ 4417: Super Mario

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意: 给定一个序列, 每次询问[l,r]区间内 算法: 本题解法非常多。 主席树、树状数组、划分树+二分、划分树、归并树+二分、线段树+二分。。。 以后我会慢慢补全这篇文章, 当做一次基础数据结构训练。 划分树 (218ms) #include

frog的小池塘 1348

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

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

POJ 2750: Potted Flower

题目链接:http://poj.org/problem?id=2750 题意: 在一个环状数列上动态修改某一元素的值, 每次询问最大子串和。 数据保证答案始终是正的, 注意题目要求子串长度必须小于原串长度。 算法: 线段树的简单应用。 注意答案分两种情况: 1)直接在线段树上求最长子序列和(题目要求子串不得等于原串,可以用小技巧处理,详见代码) 2)求所有元素和

frog的小池塘 1290

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ 2155: Matrix

题目链接:http://poj.org/problem?id=2155 题目大意: 在一个n*m的0-1矩阵上执行如下两个操作: 1)把某个子矩阵中的元素取反 2)查询某个元素的值 算法: 二维树状数组。 把[x1,x2]*[y1,y2]的矩阵取反, 相当于把点(x1,y1),(x2+1,y1),(x1,y2+1),(x2+1,y2+1)到n^n的矩形都取反一次。

frog的小池塘 1145

SGU 319: Kalevich Strikes Back

一道蛮有意思的线段树+扫描线, 很值得思考的一道题。 因为题目给的条件很强, 有很多可以根据题目优化的地方。 只是优化的时候可千万不要手滑哦~ 尽量按照规范的写法来写,可以防止出错。 题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=319 题意: 在一个W*H的平面上 给定n互不相交但可能相互包含的矩形框架

frog的小池塘 1129

POJ 3368: Frequent values

题意: 给出一个单调非减序列, 询问a[i]~a[j]区间内出现最多的元素出现了多少次 题目链接:http://poj.org/problem?id=3368 算法: RMQ的典型应用, 以前都是用线段树实现的RMQ, 今天特意学习了一下O(nlogn+q)的RMQ算法 代码如下: //其实我是来存模板的难道我会到处乱说? #include #incl

frog的小池塘 1096

POJ 1151: Atlantis

题目链接:http://poj.org/problem?id=1151 题目大意: 给出一些矩形,矩形之间可能重叠。 求覆盖的总面积 算法: 矩形面积并的典型应用。 把线段树的每个节点代表到前一个节

frog的小池塘 1087

POJ 2482:Stars in Your Window

静态二叉检索树。 其实说来奇怪, 学ACM这么长时间了,而且我还是负责基础数据结构的, 居然连这个都没写过。 //我发现我现在做的题都好水啊咋办咋办。。 题目链接:http://poj.org/problem?id=2482 题意: 给出平面上的一些点,每个点有权值 问用一个w*h的矩形最多框住的点权和是多少 矩形边框上的点不算在矩形内 算法: 把每个

frog的小池塘 1079

POJ 1177: Picture

矩形周长并。 扫描线的基本应用。 线段树果然是越写越熟越写越开心的哈~ 注意一下每个节点代表的是一个区间而非一个点。 题目链接:http://poj.org/problem?id=1177 代码如下: #include #include #include #include #include #include #include #include #include #inc

frog的小池塘 1021

POJ 2886: Who Gets the Most Candies?

这道题拖了好久,眼泪都快掉下来了。。。 先放个偷懒版代码, 等我学了反素数再把打表那部分完善一下。 题目链接:http://poj.org/problem?id=2886 题目大意: n个孩子围成一圈。 第k个孩子先退出圈子, 然后根据他手持的数字顺时针或逆时针数若干个人, 即可知道下一个退出的孩子是谁。 第i个退出的人将获得sigma(i)颗的糖果。 问谁获得

frog的小池塘 1008

POJ 4047: Garden

线段树模板题 哎,好久没写线段树了,吃力。 题目链接:http://poj.org/ProblemDescriptions/jinghua.pdf 题意: 对某个区间进行以下三种操作: 0、改变某个位置的值 1、交换某两个位置的值 2、查询某个区间内连续k个数和最大值 算法: 由于k的值是确定的, 所以直接用每个叶子节点保存它之前的k个元素的值即可。

frog的小池塘 1002
上一篇: HDOJ 4635: Strongly connected
下一篇: SOJ 500题 MARK
frog1902
博客等级 码龄14年 152粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值