hdu 6406

Activity Picks Up in E-Paper Market e-paper in Cross-media Publishing 立即下载

好歹是过了。。。

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

不知道用dp是怎么做的

思路上最大的亮点就是找出从i到n的数中第一个大于k的数字。

考虑将第p个数改为q。分为前后两边考虑

前面:

预处理出b【i】代表前i个数能取走多少个数,再维护一下前i个数的最大值。如果前k-1个数的最大值小于q,这部分对答案的贡献就是b【k-1】+1;否则是b【k】

后面:

预处理出c【i】代表如果以第i个数为起始数,到最末尾能取多少数。找出从p+1到n中第一个比q大的数字的下标设为cur,则此部分对答案的贡献就是c【cur】。

注意p为1或者n的特殊情况,查询的时候要注意

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define mod 1000000007
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,m,n) for(int i=m;i>=n;i--)
#define LL long long
#define lan(a,b) memset(a,b,sizeof(a))
using namespace std;

const int N=100010;

struct node
{
    int l,r;
    int m;//存储值
};

node tree[N*4];
int a[N],b[N],c[N];
int cur;

void build(int n ,int l,int r)
{
    tree[n].l=l;
    tree[n].r=r;
    if(l==r)
    {
        tree[n].m=a[l];//////////////////////////视情况
        return;
    }
    int mid=(l+r)>>1;
    build(n*2,l,mid);
    build(n*2+1,mid+1,r);
    tree[n].m=max(tree[n*2].m,tree[n*2+1].m);/////////////////////看线段树种类
}

int query(int n,int l,int r)
{
    if(tree[n].l==l&&tree[n].r==r)
    {
        return tree[n].m;
    }
    int mid=(tree[n].r+tree[n].l)/2;

    int res=0;
    if(r<=mid)
        res=query(n*2,l,r);
    else if(l>=mid+1)
        res=query(n*2+1,l,r);
    else
    {
        res=query(n*2,l,mid);////////////////////看线段树种类
        res=max(res,query(n*2+1,mid+1,r));////////////////////看线段树种类
    }
    return res;
}
void pin(int n,int lo,int hi,int p)
{
    int l=tree[n].l,r=tree[n].r;
    int mid=(l+r)>>1;
    if(l==r){
        cur=min(cur,l);
        return;
    }
    if(lo<=l&&r<=hi)
    {
        if(tree[n<<1].m>p)pin(n<<1,lo,hi,p);
        else if(tree[n<<1|1].m>p)pin(n<<1|1,lo,hi,p);
        return;
    }
    if(lo<=mid&&tree[n<<1].m>p)pin(n<<1,lo,hi,p);
    if(hi>mid&&tree[n<<1|1].m>p)pin(n<<1|1,lo,hi,p);
}



int main()
{
//   freopen("j.in","r",stdin);
    //freopen("1.txt","r",stdin);
//    freopen("2.txt","w",stdout);
    int t;
    scanf("%d",&t);
    while(t--)
    {
        lan(a,0);
        lan(b,0);
        lan(c,0);
        int n,m;
        scanf("%d%d",&n,&m);
        For(i,1,n)
            scanf("%d",&a[i]);
        build(1,1,n);

        int maxx=0;
        For(i,1,n){
            if(a[i]>maxx){
                    b[i]=b[i-1]+1;
                maxx=a[i];
            }
            else
                b[i]=b[i-1];
        }

        Dor(i,n,1){
            cur=inf;
            pin(1,i+1,n,a[i]);
            if(cur>n)
                c[i]=1;
            else
                c[i]=c[cur]+1;
        }
        For(i,1,m)
        {
            int p,q;
            scanf("%d%d",&p,&q);
            int ans=0,tem=0;
            ans+=b[p-1];
            if(p!=1)
                tem=query(1,1,p-1);
            if(q>tem)ans++;
            else q=tem;
            cur=inf;
            if(p!=n)
                pin(1,p+1,n,q);
            if(cur<=n)
                ans+=c[cur];

            printf("%d\n",ans);
        }
    }
    return 0;
}

 

〖进阶篇1〗YAML参数解析:从nav2_params.yaml看机器人导航调优 本文深入解析了ROS2 Nav2导航系统中关键的nav2_params.yaml文件,提供了从定位、行为树、运动控制到环境感知等核心模块的参数调优实战指南。文章通过具体场景案例,如狭窄走廊、动态仓库和高精度对接,详细阐述了如何调整AMCL粒子数、控制器权重、代价地图膨胀半径等参数,以解决机器人导航中的犹豫、碰撞和精度问题,帮助开发者实现从“能用”到“好用”的进阶。 阅读详情

相关推荐

WinIDEA基于IC5000烧录代码和调试教程

winIDEA就是ic5000用来烧录代码和调试代码的上位机,本文旨在介绍其如何去烧录代码并且调试

m0_56208280的博客 4162

HDU6444:数论+最大字段和

HDU6444 题解 环的大小为n,每次跳k步,所有有gcd(n,k)个不同的环,每个环的大小为len =n / gcd(n,k)。接下来对每一个环进行分析。 先对环的权值求和sum。 如果sum ≤0,那么找长度不大于len的最大连续字段和。 如果sum >0,num = m / len表示完整的圈的个数,b = m % len表示剩下的步数。有两种方案。 一种是先跑完num...

FlyingJack 305

从零到一:用STM32 FOC算法驯服无刷电机的艺术

本文详细介绍了如何使用STM32和FOC算法实现无刷电机的高性能控制。从硬件搭建、参数识别到闭环调节,一步步解析FOC算法的核心原理与调优技巧,帮助开发者掌握电机控制的关键技术,实现从零到一的精准驯服。

kkk56的博客 918

HDU - 6444 -- Neko's loop (单调队列优化dp)

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=6444 先来几组对拍数据: Input: 20 10 38 24 7 -2 6 -9 8 5 2 -4 0 -1 -2 10 66 7 9 -5 6 7 -2 -1 -7 -2 -10 9 0 10 78 19 9 1 6 -5 0 5 6 2 1 -2 5 10 17 0 3 -1 -3 -7...

No cost too great! 318

Simscape Multiboby学习笔记1——跟着官网学Multibody

文章目录一. 引言二. Simscape Multibody自学之路三. 本教程的目录 一. 引言 最近在倒腾Matlab的动力学仿真,起因是看到有人推荐Matlab的multbody模块,一经了解之下简直惊为天人。作为一名Matlab的小粉,看到这么好用的模块简直不要太开心,之前用simulink搭飞行器的仿真模型,虽然能够仿真看到六自由度位移,毕竟不能可视化,还是很不够直观,而且simulink仿真(以及更费力的脚本文件仿真)需要精确建模,模型不精确计算也是天差地别。而Multibody在具备其他动力学

qq_30267617的博客 8241

软考中级-软件设计师 Python基础

软考中级-软件设计师 Python知识点整理

片言可决讼,半纸能缚龙 3641

hdu 6444 - 最大子段和(单调队列)

题目链接:点击这里   解题思路: 根据k我们会得到一个循环周期,将在同一个循环节的点都归为同一类,因为归为同一类的点走过一个循环周期得到的快乐值时一样的。 很明显如果循环周期是负的那一定就不走一个循环了。那直接求最长不超过m的最大连续子段和就行了。 如果循环周期大于0,就有两种可能了(循环周期次数a=m/len(len为周期长度),b=m%n): 1.走完a圈后再加上不超过b的最大连...

过路人丶的博客 1256

低功耗边缘设备部署指南:YOLO26 INT8量化与TensorRT加速全流程

将YOLO26 INT8部署到低功耗边缘设备,核心原则是“校准为王、敏感层精准回退、端到端验证”。校准集≥500张,来自真实推理场景,未经训练增强校准集预处理与推理pipeline逐行对齐trtexec命令必带--fp16作为fallback量化后用polygraphy定位敏感层,而非盲猜仅回退必要层(通常2-3个),保留INT8收益在真实部署场景测试集上验证mAP,不以COCO为准C++部署使用异步推理+双缓冲nsys profiling确认无传输瓶颈。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 212

hdu6444(最大子段和+gcd)

给出长度为n的数组,目标快乐值s,体力m,跳跃间隔k a[i]表示i这个点的快乐值,每花费一体力跳到(i+k)%n的位置上可以获得a[(i+k)%n]的快乐值,问要达到目标快乐值s,初始至少需要多少快乐值,实际上就是求花费m体力最多能获得多少快乐值 由于跳跃间隔固定为k,那么所有的循环种数就是gcd(n,k),每个循环节的长度就是n/gcd(n,k) 所以暴力每个循环节,问题转化为最大子段和...

bpdwn2017的博客 981

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 566

在 SAP 中启用应收/应付“代扣税(Withholding Tax)”功能,本质上是激活并配置“扩展代扣税(Extended Withholding Tax)”模型

摘要:SAP中启用应收/应付代扣税功能需完成3个层级12个核心步骤:1)全局激活公司代码代扣税功能;2)配置代扣税规则、税率和科目,包括定义税种类型、代码、总账科目等;3)在供应商/客户主数据中关联代扣税设置。完成后系统可在发票或付款环节自动计算并过账代扣税,支持多税种并行计算和税率年度调整,最终生成税务报表。常见问题排查需检查公司代码激活状态和主数据配置。(149字)

金牌架构师 836

HDU 6406 (预处理+rmq+二分)

题意: 给出一个序列,询问会修改序列中的一个数字,然后问从1—n,最大值变化的次数。每次询问之间是独立的。 思路: 首先计算出每个位置开始到最后的最大值变化次数,每个位置的上一个最大值的位置。 通过rmq+二分可以计算出当前位置在当前询问值的情况下,下一个最大值更新的位置在哪里,然后通过预处理的信息前后合并即可。 代码: #include &lt;algorithm&gt; #incl...

陋室 442

自定义模型训练——打造专属OpenClaw模型(2026AI版)

本文介绍了OpenClaw自定义模型训练的核心流程,包括框架选择(PyTorch、TensorFlow、HuggingFace和原生OpenClaw框架)、训练环境搭建脚本、以及数据收集系统的设计。数据收集器支持从数据库、API、文件和网络等多种来源获取训练数据,并提供灵活的过滤机制确保数据质量。通过这套系统,开发者可以高效准备训练数据,为后续模型训练打下坚实基础。

博客 876

HDU - 6406

题目链接:HDU - 6406 预处理出从起点开始,到每个点的个数,以及每个点作为起点到终点的个数。 然后对于当前的点,分段考虑即可。 预处理的时候可以用ST表优化。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long long using namespace std; const int N=1e5+10; int n,mx[N][20],m

青烟绕指柔的博客 468

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HDU 6406 Taotao Picks Apples(前缀和+二分)

HDU 6406 Taotao Picks Apples(前缀和+二分) Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1282 Accepted Submission(s): 396 Problem Description...

博学 笃志 切问 近思 665

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU-6406-Taotao Picks Apples(四种方法,完成2)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 题目大意:给出一个序列,让你从头遍历到末尾,第一个数必须选,后面的,没碰到一个数,如果这个数大于前面选择的那个数,就再次选择这个数,给出m次操作,将x位置的数修改为val,并查询修改后能选择多少个数?(每次操作是独立的,即对序列不产生影响)。 思路:比赛时没有想出来,只想着用前缀和什么的,似...

永远鲜红の幼月的博客 308

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

hdu 6406 Taotao Picks Apples 线段树

hdu 6406 多校八第十题,设d1[ i ]为从a1开始到 ai 的最长递增子序列长度,设d2[ i ]为从ai开始到an的最长递增子序列长度,假设要把ap改为q,可以把序列分为1到p-1和p+1到n两段,可以用线段树找到1到p-1最大值下标cur,然后ans+=d1[cur],如果q大于那个a[ cur ],ans还要+1,然后在区间p+1到n找到第一个大于max( q , a[cur] ...

ccsu_cat 1348

2018 Multi-University Training Contest 8 1010 Taotao Picks Apples(hdu 6406)(ST、dp、二分)

题目链接:hdu 6406 Taotao Picks Apples Sample Input 1 5 3 1 2 3 4 4 1 5 5 5 2 3 Sample Output 1 5 3 Hint For the first query, the heights of the apples were 5, 2, 3, 4, 4, so Taotao would only pic...

yz467796454的博客 244

【杂题总汇】HDU-6406 Taotao Picks Apples

【HDU 6406】Taotao Picks Apples 多校赛的时候多写了一行代码就WA了……找了正解对拍,在比赛结束后17分钟AC了

weixin_34238633的博客 160

Taotao Picks Apples HDU - 6406

K - Taotao Picks Apples 题目链接:HDU - 6406 题意:树上有一排苹果,每个苹果又同的高度,taotao要摘苹果,而且必须从第一个苹果开始摘,然后没遇到一个高度比之前摘得苹果高的苹果就摘下来,问taota能摘多少苹果,第一个苹果必须摘;每次改变一个苹果高度,然后输出能摘到的苹果个数;每次都只在原来基础上改变苹果高度; 思路:看似是个LIS,但是每个数是变化的,...

Sirius_han的博客 289

hdu 6406 Taotao Picks Apples (杭电多校)

hdu 6406 题目较为简单,线段树维护一个区间最大值和区间最大上升长度(让我感觉有点像dp )。怎么来维护这个区间最大上升长度呢? 我们注意到一个非叶子节点,已知它的左儿子上升长度和最大值,就可以更新右儿子上升长度和最大值: 对于区间 1 到 n 来说 它的答案应该=左区间的答案+右区间的贡献。 当我们任意修改一个位置的值后,这个位置的左区间(包括它自己)不用更新(???为什么 ),当然左区间最大值要维护。然后右区间更新,怎么更新? 右区间贡献: 判断右儿子的左儿子最大值,如果小于左区间MAX

Phantom_matter的博客 167

hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)...

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 思路: 暴力,预处理三个前缀和:【1,n】桃子会被摘掉,1到当前点的最大值,1到当前点被摘掉的桃子的数量,然后我们枚举修改p点造成的所有影响,: 1,假如新输入的点比原先的点的值更大,那么我们对修改后p这个点的值和【1,p-1】的最大值关系进行分析,也就是分析前半段的影响:(1)如果p点大于...

weixin_30693683的博客 99

HDU - 6406(二分)

题目 先预处理出原队列,然后再处理出队列里两个数之间的队列 整体先分两种情况,修改时判断修改点是不是在队列里。 1,在队列里,比较修改后的值跟初始值,如果比原来大,二分查找在队列里的位置pp,答案再减去pp和p中间的数。 如果小,在v[p]中找二分找出符合条件的数的数量。 2,不在队列里,如果值比原来小或等于就不用管,如果大,就加入原来队列,再减去他后面比他小的 细节看代码。。。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #includ

weixin_45714726的博客 151

hdu-6406 Taotao Picks Apples

Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1778    Accepted Submission(s): 547   Problem Description There is an apple tree...

qq_37378303的博客 277

HDU6406 Taotao Picks Apples

Problem Description There is an apple tree in front of Taotao’s house. When autumn comes, n apples on the tree ripen, and Taotao will go to pick these apples. When Taotao picks apples, Taotao scans t...

qq_36552779的博客 290

HDU6406 Taotao Picks Apples

题意:给你一个序列,n个点m个询问,问你如果把第p个数字变成q,第一个元素为开头,遇到大的必选的严格上升子序列的长度 考场上很久才A掉,太菜了QAQ,突然想起这种必取的之前在claris的多校中做过,倒着单调队列就能预处理出以每个元素开头,遇到大的必选的严格上升子序列的长度upnum[i],于是我们就想到了吧询问离线倒着处理,先预处理出原本应该在队列中的是哪些元素,然后我们看当前询问的最近的原队...

binarycopycode 537
上一篇: hdu 6400 Parentheses Matrix思维
下一篇: hdu 6408 From ICPC to ACM贪心模拟
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值