Non-negative Partial Sums 单调队列

深入解析Android SoundTrigger架构:从HIDL到AIDL的演进与实践 本文深入解析Android SoundTrigger架构,从HIDL到AIDL的演进与实践。SoundTrigger是Android系统中低功耗语音唤醒的关键技术,通过分层设计和硬件协同实现高效语音识别。文章详细介绍了核心组件、HIDL与AIDL的对比及优化技巧,帮助开发者掌握语音模型优化和功耗管理。 阅读详情

Non-negative Partial Sums


初学单调队列,纠结了好久这个题,一直没理解原理是怎么回事,网上搜解题报告一股脑看下去还是没看个明白、、、、、终于慢慢摸索出来了

首先理解这个题的意思:一个数列,可以将最前一个数放在最后,也就是这是个数列是环状的,比说1,-2,3这个数列可以写成-2,3,1,和3,1,-2两种循环方式

题目要求统计这个数列所有循环中每一个都满足前i(1<= i <=n)个数之和为非负数(>=0)的i的个数。

思路:从1到n枚举i,求出每一个循环状态前i个数之和min,若min<0则 i 不满足条件,否则ans累加计数。然后问题就是如果依次枚举循环求和肯定超时,如何优化?

大神有用线段树有用其他各种巧办法、、、这里写下单调队列希望比那些单调队列报告更好理解。

先借个图:http://www.2cto.com/kf/201311/255850.html


循环的状况一般都把数列再往后复制一遍(图中黄色)


sum[ i ]=a[1]+a[2]+...+a[i];

思路不变。图中红色方框从2向右就开始移动,每次都对应一个循环状态,单调队列维护红框中的sum[ ](递增),这是取单调队列q的第一个值q[ 0 ](红框中sum[ ]的最小值),

用sum[ q[0] ] 去减红框左边外面第一个数也就是sum[ 1 ],即sum[ q[0] ]-sum[ 1 ]=t,若 t >=0 说明所有循环状态中的前 1 个数的和都>=0,则ans可以计数。为什么呢。。。

想一下,若红框中有A[ i ] < 0 那么sum[ i ]相对sum[ i-1 ]必定是减少的,相对方框左边外面第一个sum[ ]肯定也是减少的,这样的一个差必为负,而为什么要取红框左外第一个数,因为我们红框右移同时左边外面的数列递增到k个,我们可以通过取红框内最小值去减这个数一次性判断前k个数之和是否>=0

当红框再向右移时,有  sum[ q[ 0 ] ] - sum[ 2 ] = t,同理,t >= 0说明所有循环状态中前2个数的和都 >=0,否则存在负数

q始终维护红框内的最小sum[ ],每次移动判断 sum[ q[ 0 ] ] - sum[ i - n ]的值正负状况(i为红框内最右一个数的下标)


#include<stdio.h>
#include<string.h>
#define MAXN 1000005
int q[MAXN*2];//单调队列
int sum[MAXN*2];
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0) break;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&sum[i]);
            sum[i+n]=sum[i];
        }
        for(i=1;i<=(n<<1);i++)
            sum[i]+=sum[i-1];
        int head=0,rear=0;
        int ans=0;
        for(i=2;i<=(n<<1);i++)
        {
            while(head<rear && sum[q[rear-1]]>=sum[i])
                --rear;
            q[rear++]=i;
            if(i>n&&sum[q[head]]-sum[i-n]>=0)
                ++ans;
            while(q[rear-1]-q[head]+1>n)
                ++head;
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

ubuntu emto-cpa安装与编译 阅读详情

相关推荐

睿尔曼超轻量仿人机械臂--机械臂接口介绍

本文介绍了睿尔曼超轻量仿人机械臂的控制器接口及末端接口。

realman_Rop的博客 3434

HDU 4193 Non-negative Partial Sums(单调队列)

题目链接:Click here~~ 上次比赛的一道题,可以用单调队列做。 题意: 给你一个n项的序列,每次可以把序列的首项移动到末尾,显然一共可以构成 n 种序列,问一共有多少种序列满足条件:序列的前 i 项和都大于等于0(i:1~n)。 解题思路: 开一个 2*n 的数组,后面 n 项复制前面 n 项。这样,每个长度为 n 的区间都代表一种序列(这也是循环序列的一般做法吧)。 然...

爱.NET 204

别再只盯着报点率了:聊聊电容触摸屏算法里那些不为人知的‘软实力’

本文深入探讨了电容触摸屏算法中常被忽视的‘软实力’,包括环境噪声干扰、信号衰减补偿和多物理场耦合等核心挑战。通过对比消费电子与工业场景的算法需求,揭示了触摸算法在不同应用中的技术分野。文章还提供了实用的算法评估方法和前沿发展趋势,帮助开发者全面了解电容触摸屏技术的隐秘战场。

weixin_42524276的博客 388

hdu 4193 Non-negative Partial Sums (单调队列)

Non-negative Partial Sums Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1357    Accepted Submission(s): 518 Problem Description You are giv...

pxlsdz的博客 452

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 499

RK3588部署Zipformer模型问题总结

本文分享了在RK3588嵌入式设备上部署小米Zipformer语音识别模型时遇到的问题及解决方法。主要遇到两个问题:1)在rknn_model_zoo例程编译时出现静态库版本不兼容,通过重新编译kaldi-native-fbank库并修改链接路径解决;2)sherpa-onnx编译时提示缺少portaudio库,通过修改编译脚本启用相关宏定义后成功编译。最终成功在RK3588上运行Zipformer模型,测试结果显示该模型具有较好的识别效果和实时性(RTF=0.22),验证了其在边缘设备上的适用性。

pkyang2004的博客 2144

Non-negative Partial Sums

这个题我自己还没搞定,看了好久,最后没核心部分还真是清楚,知道的麻烦留言一下下,或者加我 qq:997930294给我解释一下,万分感谢 描述     You are given a sequence of n numbers a0,....,an-1. A cyclic shift by k positions (0≤k≤n-1) results in the follo

吃葡萄不吐葡萄皮 1465

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1854

HDU Non-negative Partial Sums (单调队列)

Problem Description You are given a sequence of n numbers a0,..., an-1. A cyclic shift by k positions (0k ak+1,..., an-1, a0, a1,..., ak-1. How many of the n cyclic shifts satisfy the condition tha

左眼皮跳跳 813

结构力学仿真软件:STAAD.Pro:结构抗震设计与STAAD.Pro应用_2024-08-10_11-49-29.Tex

STAAD.Pro是一款广泛应用于结构工程领域的仿真软件,由Bentley Systems开发。它能够进行结构分析和设计,支持多种结构类型,包括桥梁、建筑物、塔架等。STAAD.Pro提供了强大的建模工具,用户可以轻松创建复杂的结构模型,并进行静态和动态分析。软件还支持多种载荷组合,包括地震载荷,以及提供详细的报告和图纸输出,便于工程师进行设计和审查。STAAD.Pro是一款广泛应用于结构工程设计的软件,其界面直观,功能强大,能够进行结构分析与设计。菜单栏。

976

AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用

【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

Non-negative Partial Sums(单调队列,好题)

Non-negative Partial Sums Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2252    Accepted Submission(s): 773 Problem Description You

xdlove 1205

YOLOv11改进 | 缝合CCFM轻量检测模型实现高精度跨尺度特征融合【附参考代码】

YOLOv11作为一代优秀的端到端目标检测模型,已经在速度和精度之间取得了较好的平衡。但其默认的Neck结构(通常为FPN + PAN)在处理小目标与多尺度信息时,仍存在信息流冗余、跨尺度特征融合不充分等问题。 本文提出一种轻量化的跨尺度跨通道融合模块(CCFM, Cross-scale and Cross-channel Fusion Module),以替代或增强YOLOv11中的Neck部分,有效提升特征表达能力和检测性能,尤其是在小目标和复杂场景下取得显著涨点。

一键难忘的博客 1412

单调队列—— HDU 4193 Non-negative Partial Sums

Non-negative Partial Sums Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1357    Accepted Submission(s): 518 Problem Description Y

Vector 1871

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU 4193 Non-negative Partial Sums【单调队列】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4193 题意: 给定序列,可以把后面的连续的部分移到最前面来,问多少种移法使得最终得到的序列的前i项和均大于等于0(1≤i≤n)? 分析: 先将数组前后拼接起来,记录每个位置的前缀和。然后去找长度为n的滑动窗口,在这个窗口内,要保证前i项和大于等于0,也即区...

An55511的博客 310

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

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

HDU 4193 Non-negative Partial Sums 【单调队列】

HDU 4193 Non-negative 题解,用到了单调队列、前缀和、循环同构等技巧

Help me up!I can still AC! 500

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

HDOJ-4193-Non-negative Partial Sums【单调队列】

HDOJ-4193-Non-negative Partial Sums【单调队列】

Linoy 516

HDU 4193 Non-negative Partial Sums(想法题,单调队列)

HDU 4193 题意:给n个数字组成的序列(n 思路: 这题看到数据规模觉得只能用最多O(nlogn)的算法,然后想到了之前刚做过的有关最小表示法的题,但还没证明出一个做这题有效的算法出来。 后来看过题解,发现用的最多的方法是单调队列,然而我对这个知识点知之甚少orz /*科普君:from单调队列 单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只

a novice 910

hdu 4193 Non-negative Partial Sums 单调队列

先复制一遍数组,在用一个数组sum[ i ]表示前 i 个数字的和,对于以第k个数开头的情况,只需找出sum[ k ]到sum[ k+n ]的最小值min,如果min - sum[ k-1 ]大于0则满足。 #include <stdio.h> #define maxn 2001000 int a[maxn],sum[maxn]; int q[2*maxn]; in...

amily05200的博客 131

hdu Non-negative Partial Sums(单调队列)

Non-negative Partial Sums Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 6   Accepted Submission(s) : 1 Font: Times New Roman | Verdana

勿忘初衷 1727

HDU-4193 Non-negative Partial Sums 单调队列

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4193         题意:给定一个数列,进行绕环移动,然后问所有前缀和都大于等于零的数列有多少。         首先按照一般方法,把数列往后复制,即a1a2,,,ana1a2,,,an,然后对其求前缀和。接下来就要求移动的区间内的最小值(这里很像POJ2823),看其是否大于等于零。那么就可用到单

岁月流风、、 1001

【单调队列】hdu 4193 Non-negative Partial Sums

http://acm.hdu.edu.cn/showproblem.php?pid=4193 题意:每次把最后一个元素移动到队首,求这n个数的所有前缀数组的和都>=0 分析:这货就是一个循环数组,用单调队列找出n个前缀的最小的和,只要判断这个最小的和是否>=0即可 #include #include using namespace std; const int NM=20000

yduqytd的专栏 817

HDU OJ 4193 Non-negative Partial Sums 【单调队列】

原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=4193 单调队列详解:参考    http://blog.csdn.net/dgq8211/article/details/7430726   ,讲的很好。 AC代码: #include #include const int M=1000002<<1; int sum[M],q[M]; int h

nyist_飘谊 2167
上一篇: Luck and Love (二维线段树)
下一篇: hdu 2222 Keywords Search (AC自动机)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值