Min +Sum

MySQL之汇总数据(AVG,COUNT,MAX,MIN,SUM) DDD 阅读详情

题目传送门

引

区间操作可以多想想分治

解法

若当前分治到的区间为 [ L , R ] [L,R] [L,R] ,那么我们考虑 横跨 m i d mid mid 的区间的合法个数. 接下来提到的左端点 l l l 和右端点 r r r 均满足 l ≤ m i d , r ≥ m i d + 1 l\le mid , r\ge mid+1 l≤mid,r≥mid+1

按 m i d → L mid \to L mid→L 的顺序枚举 l l l ,计算 合法的 r r r 的数量

设 S u m = ∑ i = l m i d b i , M I N = min ⁡ i = l m i d { a i } Sum=\sum_{i=l}^{mid} b_i ,MIN=\min_{i=l}^{mid}\{a_i\} Sum=∑i=lmid​bi​,MIN=mini=lmid​{ai​}
设 s s i = ∑ j = m i d + 1 i b j , M I i = min ⁡ j = m i d + 1 i { a j } ss_i=\sum_{j=mid+1}^{i}b_j , MI_i=\min_{j=mid+1}^{i}\{a_j\} ssi​=∑j=mid+1i​bj​,MIi​=minj=mid+1i​{aj​}
若 p p p 为最大的满足 m i n m i d + 1 p { a i } > M I N min_{mid+1}^{p}\{a_i\} > MIN minmid+1p​{ai​}>MIN

那么对于 [ m i d + 1 , p ] [mid+1,p] [mid+1,p] 的位置 p o s pos pos , 需要满足 S u m + M I N + s s p o s ≤ S Sum + MIN + ss_{pos} \le S Sum+MIN+sspos​≤S ,即 s s p o s ≤ S − ( S u m + M I N ) ss_{pos} \le S-(Sum + MIN) sspos​≤S−(Sum+MIN)
对于 [ p + 1 , R ] [p+1,R] [p+1,R] 的位置 p o s pos pos ,需要满足 S u m + M I p o s + s s p o s ≤ S Sum + MI_{pos} + ss_{pos} \le S Sum+MIpos​+sspos​≤S ,即 M I p o s + s s p o s ≤ S − S u m MI_{pos}+ss_{pos} \le S-Sum MIpos​+sspos​≤S−Sum

用平衡树之类的数据结构维护一下就好了

Code

#include <iostream>
#include <vector>
#define rep(i,j,k) for(int i=j;i<=k;i++) 
#define _rep(i,j,k) for(int i=k;i>=j;i--)

using ll = long long ;
using namespace std;

const int N=2e5+7;

int n;
ll S;
ll a[N],b[N];

struct Balanced_Tree {
    int root=0,tot=0,rk[N],sz[N],ls[N],rs[N];
    ll val[N];

    void Push_up(int rt) {
        sz[rt]=sz[ls[rt]]+sz[rs[rt]]+1;
    }

    int Merge(int x,int y) {
        if(!x||!y) return x|y;
        if(rk[x]<rk[y]) {
            rs[x]=Merge(rs[x],y);
            Push_up(x);
            return x;
        }else {
            ls[y]=Merge(x,ls[y]);
            Push_up(y);
            return y;
        }
    }

    void Split(int rt,ll v,int &x,int &y) {
        if(!rt) {x=y=0; return ;}
        if(val[rt]<=v) {
            x=rt;
            Split(rs[x],v,rs[x],y);
        }else {
            y=rt;
            Split(ls[y],v,x,ls[y]);
        }
        Push_up(rt);
    }

    int Getnew(ll v) {
        val[++tot]=v,sz[tot]=1,rk[tot]=rand();
        return tot;
    }

    void Insert(ll v) {
        int x,y; Split(root,v,x,y);
        root=Merge(Merge(x,Getnew(v)),y);
    }

    void Erase(ll v) {
        int x,y,z;
        Split(root,v,x,z),Split(x,v-1,x,y);
        root=Merge(Merge(x,ls[y]),Merge(rs[y],z)); 
    }

    ll Query(ll v){
        int x,y; Split(root,v,x,y);
        ll res=sz[x];
        root=Merge(x,y);
        return res;
    }

    void Clear() {
        for(int i=1;i<=tot;i++) 
            ls[i]=rs[i]=sz[i]=0;
        root=0;
        tot=0;
    }
}BT,_BT;

ll solve(int l,int r) {
    if(l>=r) return (a[l]+b[l]<=S)?1ll:0ll;
    int mid=(l+r)>>1; ll res=0; 
    vector<ll> MI(r-mid+5,1e18),ss(r-mid+5);
    for(int i=mid+1,j=1;i<=r;i++,j++) {
        MI[j]=min(MI[j-1],a[i]) , ss[j]=ss[j-1]+b[i];
        BT.Insert(ss[j]+MI[j]);
    }
    int p1=mid; ll sum=0,MIN=1e18;
    _rep(i,l,mid) {
        sum+=b[i],MIN=min(MIN,a[i]);
        while(p1<r && MI[p1+1-mid]>MIN) {
            p1++;
            BT.Erase(ss[p1-mid]+MI[p1-mid]);
            _BT.Insert(ss[p1-mid]);
        }
        res+=BT.Query(S-sum) + _BT.Query(S-sum-MIN);
    }
    BT.Clear(),_BT.Clear();
    return res+solve(l,mid)+solve(mid+1,r);
}

int main() {
    // freopen("tx.in","r",stdin);
    // freopen("tx.out","w",stdout);
	scanf("%d%lld",&n,&S);
    rep(i,1,n) scanf("%lld",&a[i]);
    rep(i,1,n) scanf("%lld",&b[i]);
    printf("%lld\n",solve(1,n));
    return 0;
}

结

对于不开 l o n g l o n g long\quad long longlong ,是原罪.

hive的开窗函数举例(SUM、AVG、MIN、MAX) 数据准备: cookie1,2015-04-10,1 cookie1,2015-04-11,5 cookie1,2015-04-12,7 cookie1,2015-04-13,3 cookie1,2015-04-14,2 cookie1,2015-04-15,4 cookie1,2015-04-16,4 建表语句: create database if not exists my... 阅读详情

相关推荐

Flink ,Min MinBy Max MaxBy sum实例

.min(0) //找最小值,返回一个tuple元素(可能是源头不存在的元素),属性0是窗口内所有元素的属性0的最小值,属性1是窗口内第一个tuple的属性1值 .min(1) //找最小值,返回一个tuple元素(可能是源头不存在的元素),属性0是窗口内第一个tuple的属性0值,属性1是窗口内所有元素的属性1的最小值 .minBy(0)//找属性0值最小的元素,返回一个tuple元素,属性0、属性1均是窗口内属性0值最小的元素值 .minBy(1)//找属性1值最小的元素,返回一个tuple元素,属性.

Top5软件工程硕士,先后在京东、字节从事多年Java后端开发、实时和离线大数据开发 1618

min=(min++)%60

case 0x0e://min++;                      min=(min++)%60;                      shi = min/10;                      ge = min %10;  分析:               将min初值设为1时按键时显示的始终是1.               将min初值设为2时按键时

小蚍蜉 876

GIS分析-利用K-Means方法进行地震分析

通过“聚类”可以获得有关我们所拥有的数据的各种线索,这是数据挖掘技术之一。分析创建的组有助于决策过程。在这项研究中,我们将使用数据挖掘工具之一的K-Means方法研究安纳托利亚东部地区近100年发生的地震的空间分布,并试图获得有用的信息,以供未来的研究使用。我从局地震目录页面获得了研究所需的地震数据,并从获得了区域边界数据。

gis收藏家的博客 1570

LDPC解码算法优化:归一化Min-Sum与偏移Min-Sum的工程实践

摘要:研究提出通过归一化因子α和偏移量β改进Min-Sum算法,在仅增加5%计算复杂度的情况下,性能提升0.3-0.4dB。实验表明,改进后的NMS(α=0.8)和OMS(β=0.2)算法BER性能接近SPA,但计算复杂度显著降低。其中NMS通过α抑制过估计,OMS通过β削减过估计,二者均只需简单运算即可实现。参数优化建议α∈[0.75,0.85],β∈[0.15,0.25]。该改进方案硬件实现友好,特别适合5G基站等实时系统应用。

Proxy_ZZ0的博客 1165

SWIFT报文格式解析:从MT103到MT760,这些金融电文你了解多少?

本文深入解析SWIFT报文格式中的MT103与MT760,详细介绍了这两种金融电文的结构、应用场景及实操技巧。MT103用于国际汇款业务,MT760则适用于银行保函开立,两者在国际金融交易中扮演关键角色。文章还提供了常见问题解决方案和自动化处理建议,帮助金融从业者高效处理跨境业务。

h9j8k7l6m5n的博客 1141

高通thermal-engine.conf配置详解:从虚拟传感器到CPU频率控制的完整指南

本文深入解析了高通thermal-engine.conf配置文件的架构与调优方法。从虚拟传感器的加权融合原理,到监控算法与CPU频率控制的多级策略,提供了完整的配置详解与实战调试指南。文章旨在帮助开发者与高级用户掌握底层温控逻辑,在性能与散热间实现精准平衡,并详细介绍了日志调试与场景化配置等高级技巧。

weixin_28327051的博客 495

sum、max 和 min 聚合函数

1.聚合函数介绍 在数据库查询过程中,不仅只返回数据的基础信息,有时还需对这些数据进行统计和汇总。MySQL 提供了聚合函数,用于实现这些高级功能。 聚合函数用于对一组值进行计算并返回一个汇总值,使用聚合函数可以统计记录行数、计算某个字段值的总和以及这些值的最大值、最小值和平均值等。 ...

weixin_58825277的博客 3805

STM32实战:ADXL345传感器驱动与数据采集全解析(IIC/SPI双模式适配)

本文详细解析了STM32驱动ADXL345传感器的全流程,包括IIC和SPI双模式适配、硬件连接、寄存器配置及数据采集处理。通过实战代码示例和常见问题排查指南,帮助开发者快速实现高精度加速度数据采集,适用于运动检测、姿态识别等多种嵌入式应用场景。

weixin_29171087的博客 313

Hive窗口函数之SUM、AVG、MIN和MAX

本文中介绍Hive中的sum、avg、min和max四种窗口函数。 1、数据准备 数据如下所示: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 ...

LMR的博客 1万+

硬件工程师八大细分岗位详解:从芯片到整机的技术分工与职业选择

硬件工程作为电子系统设计的核心领域,涉及从芯片级到整机级的完整技术链条。其基本原理是通过电路设计、信号处理和功率管理等技术,将电子元件集成为功能完备的硬件系统。随着产品复杂度提升,硬件工程师岗位出现高度专业化分工,这种细分不仅提升了技术深度,更优化了团队协作效率。在工程实践中,信号完整性和电源完整性成为高速数字设计的两个关键技术挑战,直接影响系统稳定性。本文基于行业热词"硬件工程师"和"信号完整性",深入解析八大细分岗位的技术差异,帮助从业者明确职业发展方向,构建系统化的硬件设计思维。

weixin_33811539的博客 450

【车辆仿真】从0开始建立dSPACE RT Simulink工程:CAN通信(RTICANMM方法)

【工程环境信息】:本文基于链接文章搭建SCALEXIO Rack RTPC总线节点,用于与AutoBox通信硬件:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):AutoBox (DS1006)板卡:DS6342软件:本文所使用的DBC链接提示:以下是本篇文章正文内容,下面案例可供参考!!!的部分一定记得配置,其他的按需配置RTICANMM的灵活度非常高,尽可能参考Help文档,理解相应的配置内容官方有RTICANMM的样例工程,在下方路径。

winnizap的博客 2381

MySQL之常见函数应用:COUNT、MAX、MIN、AVG、SUM

在数据库中,聚合函数用于对一组数据进行计算,返回一个单一的值。这些函数可以用于对数值、字符串、日期等数据进行统计、分析和汇总。常见的聚合函数包括COUNTMAXMINAVG和SUM。了解它们的使用场景和应用方式,可以帮助我们更高效地处理数据查询和分析。本文将详细介绍这五个常见的聚合函数的作用、应用场景以及如何在实际查询中使用它们。

2201_75863687的博客 955

基于STM32、HAL库的IP5356M_DBZ_CA快充协议芯片简介及驱动程序设计

IP5356M_BATTERY_LEVEL_25 = 1, /* 电池电量25% */IP5356M_CHARGE_STATE_CHARGE_DONE = 4, /* 充电完成 */IP5356M_CHARGE_STATE_FAST = 2, /* 快速充电 */IP5356M_CHARGE_STATE_NONE = 0, /* 无充电 */IP5356M_CHARGE_STATE_PRE = 1, /* 预充电 *//* 延时1秒 */

corlin6688的博客 1418

go语言Min,Max,Sum函数

在编写go程序时我们经常需要使用多变量的Min,Max函数。但是会发现官方代码中只提供了float类型的Min,Max函数,这是因为浮点型的数据判断会涉及到比较多的逻辑,而整数型的数据判断逻辑十分简单,可以十分轻松的实现。 因此这里就分享一下Min,Max和Sum的代码实现。逻辑非常简单: const ( MININT64 = -922337203685477580 MAXINT64 = 9223372036854775807 ) func Max(nums... int64) i

qq_29848559的博客 9386

从后端角度浅谈抗辐射设计----三模冗余(TMR)

三模冗余设计(TMR),是最常用的一种容错技术,三个模块采取相同的操作,以多数相同的输出作为表决系统的正确输出,即3取2,因为三个模块是相互独立的,而其中两个模块同时出错的概率是极小的,因此便可保证系统输出的可信度。然而这个设计也会存在面积浪费,功耗的增加,而且由于是冗余的设计,在后续进行综合或者pr的时候会被工具优化,因此需要对模块进行don’t touch设置;通过增值表得到,逻辑关系表达式为:Q=(Q1&Q2)|(Q1&Q3)|(Q2&Q3),通过工艺库的stdcell进行搭建,得到如下电路。

芯冰乐 327

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

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

Hive的分析窗口函数SUM,AVG,MIN,MAX的例子

Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。 今天先看几个基础的,SUM、AVG、MIN、MAX。 用于实现分组内所有和连续累积的统计。 Hive版本为 apache-hive-0.13.1 数据准备 CREATE EXTERNAL TABLE lxw1234 ( cookieid string, createtime string, --day pv INT ) ROW FORMAT DELIMITED FIELDS TE

helloxiaozhe的博客 5161

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SQL 聚合函数总结:COUNT、SUM、AVG、MAX、MIN 详解

它们可以帮助我们对数据进行统计、汇总和计算,比如求总数、平均值、最大值、最小值等。本文将带你系统掌握 SQL 常见的聚合函数:COUNT、SUM、AVG、MAX、MIN,配合示例,快速理解和应用。2. COUNT(column):统计某列中非 NULL 的值数量。COUNT(column) 只统计该列非 NULL 的值。SUM() 用于计算数值列的总和,通常结合条件查询。应用场景:找出最大值,如最高分、最新时间、最大金额。应用场景:找出最小值,如最低价、最早时间、最小库存。

weixin_44118965的博客 1336

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

聚合函数的艺术:SQL中的SUM、AVG、MAX、MIN深度解析

聚合函数,也称为集合函数,对一组值进行计算,并返回一个单一的值。它们通常与GROUP BY子句结合使用,以对数据集进行分组并计算每个组的统计信息。

2401_85702623的博客 1509

SQL 聚合函数详解:COUNT、SUM、AVG、MIN、MAX

聚合函数(Aggregate Functions)对多行数据执行计算,并返回单个结果。与处理单个值的常规函数不同,聚合函数会将数据"折叠"成汇总统计信息。函数用途返回值类型COUNT()计数行或非 NULL 值整数SUM()求和数值数字AVG()计算平均值数字MIN()查找最小值与输入相同MAX()查找最大值与输入相同核心特点多行输入,单个输出:处理多行数据,返回一个汇总值自动忽略 NULL:大多数聚合函数会自动忽略 NULL 值与 GROUP BY 结合:可以按组进行汇总适用范围广。

jinahong101的博客 815

聚合函数(如SUM、AVG、MAX、MIN等)的使用

聚合函数在SQL中用于对一组值执行计算,并返回单个值。这些函数通常与GROUP BY子句一起使用,以根据一个或多个列对结果集进行分组,并对每个组执行聚合计算。

m0_46552684的博客 1290

集合函数AVG,SUM,MAX,MIN

需要计算这些值的平均值。使用函数AVG(),你可以返回一个字段中所有值的平均值。 假如你对你的站点进行一次较为复杂的民意调查。访问者可以在1到10之间投票,表示他们喜欢你站点的程度。你把投票结果保存在名为vote的INT型字段中。要计算你的用户投票的平均值,你需要使用函数AVG(): SELECT AVG(vote) FROM opinion 这个SELECT语句的返回值代表用户对...

515

Oracle之Avg、Count、Max、Min、Sum的使用方法

Avg、Count、Max、Min、Sum这些都属于聚合函数,也可以叫分组函数;分组函数:聚合函数对一组数据中的某个要执行计算的列进行返回单一的值。该些聚合函数可以忽略空值,经常与 SELECT语句的 GROUP BY 子句一起使用,因此有的人有的时候也把它们称为分组函数。这类函数通常应用于报表统计的计算中; 定义:分组函数的作用于一组数据,并对一组数据返回一个值; Avg:返回一个数字列或计算...

weixin_44589334的博客 5593

mysql max sum_mysql之count,max,min,sum

写在前面昨天去青龙峡玩了一天,累的跟狗似的。不过还好,最终也算登到山顶了,也算来北京后征服的第三座山了。这里也唠叨一句,做开发这行,没事还是多运动运动,对自己还是很有好处的,废话少说,还是折腾折腾sql语句吧。系列文章mysql之创建数据库,创建数据表mysql之select,insert,delete,updatemysql之group by,order bycount计数,经常和group b...

weixin_35793573的博客 224

Linq——Count、Sum、Min、Max、Average

原文地址:Linq——Count、Sum、Min、Max、Average作者:mousekitty using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; usi

我本无名的专栏 6244

MySQL 常见函数应用:COUNT、MAX、MIN、AVG、SUM

在数据库查询中,聚合函数是用来对一组数据执行计算的函数,返回一个单一的值。常见的聚合函数包括COUNTMAXMINAVG和SUM。这些函数通常与GROUP BY子句结合使用,用于对分组数据进行计算,或者与WHERE子句一起用于对数据进行条件过滤。本文将详细介绍这五个聚合函数的作用、应用场景和示例。聚合函数是数据库查询中常用的工具,它帮助开发者对数据进行分析和统计。COUNT:统计记录的数量,常用于计数操作。MAX:返回某列的最大值,常用于查找最大值。MIN:返回某列的最小值,常用于查找最小值。

2201_75863687的博客 1120

关于count(),sum(),avg(),max(),min()需要注意的一些地方及count(),avg(),sum(),max().min()对于null的处理

摘自https://www.liaoxuefeng.com/wiki/1177760294764384/1179611448454560 关于聚合函数,要特别注意: 1.MAX()和MIN()函数并不限于数值类型。如果是字符类型,MAX()和MIN()会返回排序最后和排序最前的字符。 2. 如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而SUM()、AVG()、MAX()和MIN()会返回NULL: ...

m0_46093829的博客 721
上一篇: [NOIP2010 普及组] 三国游戏
下一篇: [ABC294Ex] K-Coloring
PocketSam
博客等级 码龄4年 24粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值