【JZOJ 5282】【清华集训2017模拟】等差划分数

Screenshot_2026-11-04-16-26-45-46.jpg 立即下载

Description

这里写图片描述

Solution

这种题肯定是要差分的,
这样就变成了:求一段区间中,至少能分成多少段,使得每段和相同,每段的开头允许挂一个不同的;
那么这个用线段树即可,
对于每个区间,记录它右/左边有多少个不相同的数,同时还要记录一下这个区间是否相邻两数都不同,合并时特判掉一些情况即可,

Code

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define min(q,w) ((q)>(w)?(w):(q))
#define max(q,w) ((q)<(w)?(w):(q))
using namespace std;
typedef long long LL;
const int N=100500;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n;
int sfa[N];
struct qqww
{
    LL l,r;
    int ans;
    int lv,rv;
    bool af;
    LL la;
}b[N*5],ans;
void merge(qqww &e,qqww e1,qqww e2)
{
    e.ans=e1.ans+e2.ans;
    e.l=e1.l;
    e.r=e2.r;
    e.lv=e1.lv+(e1.af?e2.lv:0);
    e.rv=e2.rv+(e2.af?e1.rv:0);
    e.af=e1.af&&e2.af;
    if(!e2.lv&&!e1.rv&&e1.ans&&e1.r==e2.l){e.ans--;return;}
    if(e1.r==e2.l)
    {
        e.af=0;
        if(e1.rv&&e2.lv)e.ans++;
        if(e1.rv)e1.rv--;
        if(e2.lv)e2.lv--;
        if(e1.af)e.lv=e1.rv;
        else if(e1.rv)e.ans+=(e1.rv-1)/2+(e1.rv-1)%2;
        if(e2.af)e.rv=e2.lv;
        else if(e2.lv)e.ans+=(e2.lv-1)/2+(e2.lv-1)%2;
    }else if(!e1.af&&!e2.af)
    {
        if(e1.rv+e2.lv)
            e.ans+=(e1.rv+e2.lv-1)/2+(e1.rv+e2.lv-1)%2;
    }
}
void build(int l,int r,int e)
{
    if(l==r)
    {
        b[e].r=b[e].l=sfa[r]-sfa[r-1];
        b[e].af=1;
        b[e].lv=b[e].rv=1;
        b[e].ans=0;
        return;
    }
    int t=(l+r)>>1;
    build(l,t,e*2);
    build(t+1,r,e*2+1);
    merge(b[e],b[e*2],b[e*2+1]);
}
void doit(int l,int r,int e)
{
    if(!b[e].la)return;
    b[e].l+=b[e].la;
    b[e].r+=b[e].la;
    if(l!=r)b[e*2].la+=b[e].la,b[e*2+1].la+=b[e].la;
    b[e].la=0;
}
void change(int l,int r,int e,int l1,int r1,int l2)
{   
    if(r1>n)r1=n;
    if(r1<l1)return;
    int t=(l+r)>>1;
    if(l<r)doit(l,t,e*2),doit(t+1,r,e*2+1);
    if(l1<=l&&r<=r1)
    {
        b[e].la+=(LL)l2;
        doit(l,r,e);
        return;
    }
    if(r1<=t)change(l,t,e*2,l1,r1,l2);
        else if(t<l1)change(t+1,r,e*2+1,l1,r1,l2);
        else
        {
            change(l,t,e*2,l1,t,l2);
            change(t+1,r,e*2+1,t+1,r1,l2);
        }
    merge(b[e],b[e*2],b[e*2+1]);
}
void find(int l,int r,int e,int l1,int r1)
{
    if(r1>n)r1=n;
    if(l1>r1)return;
    int t=(l+r)>>1;
    if(l<r)doit(l,t,e*2),doit(t+1,r,e*2+1);
    if(l1<=l&&r<=r1)
    {
        merge(ans,ans,b[e]);
        return;
    }
    if(r1<=t)find(l,t,e*2,l1,r1);
        else if(t<l1)find(t+1,r,e*2+1,l1,r1);
        else
        {
            find(l,t,e*2,l1,t);
            find(t+1,r,e*2+1,t+1,r1);
        }
}
int main()
{
    freopen("arithseq.in","r",stdin);
    freopen("arithseq.out","w",stdout);
    int q,w,e,_;
    read(n);
    fo(i,1,n)read(sfa[i]);
    build(1,n,1);
    for(read(_);_;_--)
    {
        char ch=' ';
        for(;ch!='A'&&ch!='B';ch=getchar());
        int l,r;
        read(l),read(r);
        if(ch=='A')
        {
            read(q),read(w);
            change(1,n,1,l,l,q);
            change(1,n,1,l+1,r,w);
            change(1,n,1,r+1,r+1,-(r-l)*w-q);
        }else
        {
            if(l==r){printf("1\n");continue;}
            ans.l=ans.r=-2333333;
            ans.lv=ans.rv=0;
            ans.af=1;
            ans.ans=0;
            find(1,n,1,l,r);
            if(ans.lv)ans.lv--;
            ans.ans+=ans.rv/2+ans.rv%2;
            ans.ans+=ans.lv/2+ans.lv%2;
            if(ans.af)printf("%d\n",ans.rv/2+ans.rv%2);
            else printf("%d\n",ans.ans);
        }
    }
    return 0;
}
TG-2026-11-08-071400786.mp4 立即下载

相关推荐

互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

仙人掌与圆方树的学习 【模板】静态仙人掌

题目链接 BZOJ 2125 最短路 圆方树 求一幅仙人掌图中,Q次询问两点最短路。 仙人掌问题,我们可以直接将原来的N个点缩点成为一棵生成树——圆方树。 这棵圆方树是怎样建立的呢,首先,我们看图: 这个是原图; 这个是缩点之后的圆方树。 那么,两点之间的距离不就是可以通过LCA来求解了吗?但是这里有个问题,就是我们在求解LCA的时候,也是最关键的一点就是在于,...

既然弱小,就只顾变强就是了 396

巴基斯坦进口贸易数据集5097类HS6商品六年

本数据集收录巴基斯坦2019至2024年六年间的年度进口贸易数据,覆盖5097个HS6编码商品类别,年度进口总额达500亿至800亿美元规模,完整捕捉疫情前基线、新冠疫情冲击、进口限制政策与能源价格波动等关键经济节点。高进口额品类包括石油馏分、原油、液化天然气、棕榈油与光伏太阳能设备。字段包含HS6商品名称、HS6编码及2019至2024各年度进口额(美元计价)。适用于能源与大宗商品进口依赖分析、增长率与波动性(CAGR)研究、宏观经济冲击建模,以及按HS两位章节(第27章矿物燃料、84/85章机械设备)展开的宏观行业聚合分析,也是国际贸易研究与时间序列分析课程的实用素材。数据许可:Apache 2.0。

#164. 【清华集训2015】V

DescriptionPicks博士观察完金星凌日后,设计了一个复杂的电阻器。为了简化题目,题目中的常数与现实世界有所不同。这个电阻器内有编号为 1∼n1∼n 的 nn 个独立水箱,水箱呈圆柱形,底面积为 1 m21 m2,每个水箱在顶部和底部各有一个阀门,可以让水以 1 m3/s1 m3/s 的流量通过,每个水箱的上阀门接水龙头,可以无限供应水,下阀门不接东西,可以让水流出。水箱顶部和底部都有一个

Facico的博客 1248

Crystal Designer 2020 SP2 CR202002P-400-70005715

Crystal Designer 2020 SP2 CR202002P_400-70005715

好的,技术转移行业资深专家为您撰写如下。.docx

好的,技术转移行业资深专家为您撰写如下。

UOJ #164. 【清华集训2015】V

题目 (居然)比想象中好写多了 操作: 区间赋值,区间加,区间减,区间和000取maxmaxmax,单点询问,单点求历史最大值。 此题所有的修改都可以用一个标记表达: (a,b)(a,b)(a,b)表示将xxx变为max(a+x,b)max(a+x,b)max(a+x,b) 那么标记的合并可以发现(a,b)∗(c,d)=(a+c,max(b+c,d))(a,b)*(c,d)=(a+c,max(b+...

Freopen的博客 390

产业园区如何高效匹配产业需求与科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

静态仙人掌【模板】【tarjan】【LCA】

>Description 这是一道静态仙人掌(Block Forest Data Structure)的模板题。 如果您不知道什么是仙人掌,那么此处给出无向仙人掌图的定义: 任意一条边至多只出现在一条简单回路的无向连通图称为仙人掌。 给你一个有 n 个点和 m 条边的仙人掌图,和 q 组询问 每次询问两个点 u,v求两点之间的最短路。 >Input 第一行三个正整数 n,m,q,意义如题目描述。 接下来 mmm 行,每行三个正整数 u,v,w,表示 u,v 之间有一条权值为 w 的无向边。 然

//(^ o ^)// 525

国央企创新负责人如何系统化管理科技成果与创新资源?.docx

国央企创新负责人如何系统化管理科技成果与创新资源?

【动态多智能体系统的通信感知编队控制】一种新颖的通信感知编队控制策略,用于动态多智能体系统研究(Matlab代码、Python代码实现)

内容概要:文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但其内容并未深入介绍Plecs环境下全桥LLC谐振变换器的具体建模与仿真过程,而是呈现为一份涵盖多领域科研主题的资源列表。文档内容广泛涉及多智能体系统控制、无人机路径规划、电力电子变换器、状态估计、信号处理、优化算法等研究方向,并多次提及Matlab/Simulink、Python等工具的代码实现。整体来看,该文档更像是一份科研项目目录或技术资源索引,重点推介了包括LLC谐振变换器在内的多种控制系统与电力电子仿真模型,但对标题所述核心内容缺乏详尽的技术描述与实现细节。; 适合人群:电力电子、自动化、控制工程、信号处理及多智能体系统等相关领域的研究生、科研人员与工程技术人员。; 使用场景及目标:①为科研工作者提供跨学科的技术方向参考与研究选题灵感;②获取电力系统、无人机控制、信号处理等领域成熟的Matlab/Simulink或Python仿真代码资源,用于算法验证与模型复现。; 阅读建议:建议将此文档作为科研资源导航目录使用,读者可根据自身研究方向筛选感兴趣的主题,并通过文中提供的公众号或网盘链接获取完整的代码、仿真模型与配套资料进行深入学习与实践。

[BZOJ1023]静态仙人掌 Tarjan+dp+单调队列

诶写完写完代码以后才发现天黑了,赶快溜出去找东西吃 求仙人掌的直径,不能直接两边DFS找最长路,有这样一个反例 绿色为真实的直径,可是如果第一遍找到最长路是红色路径的话,那么就找不到绿色路径 还是用最传统的方法,dp求从该节点出发的最长连 引用一篇写的虽然有点长但是写的很好的博客 http://z55250825.blog.163.com/blog/static/1502

HbFS- 595

产业园区运营负责人如何提升企业技术需求与科研资源的精准匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

交错并联图腾柱PFC变换器仿真设计(Simulink仿真实现)

内容概要:本文档聚焦于“交错并联图腾柱PFC变换器仿真设计(Simulink仿真实现)”这一核心技术主题,系统性地提供了基于Simulink平台的电力电子变换器建模与仿真资源,涵盖交错并联图腾柱PFC变换器的主电路拓扑结构、控制策略实现、动态性能分析及仿真验证全过程。文档不仅深入介绍了该变换器在高效率、低谐波、高功率因数方面的优势,还详细展示了其在均流控制、软开关实现、抗干扰能力等方面的仿真设计要点。同时,配套资源丰富,涵盖了多种典型电力电子系统案例,如三相PWM整流器、VIENNA整流器、LLC谐振变换器、双有源桥DAB变换器等,涉及PI双闭环、滞环控制、SVPWM调制、中点电压均衡、软开关技术等多种关键控制方法。此外,资源包还包含Mathcad计算书、Simulink/Plecs仿真模型、设计报告与参考文献,构建了从理论推导、参数设计到仿真验证的完整技术链条,便于用户快速掌握并复现先进拓扑的控制逻辑与系统设计流程。; 适合人群:面向具备电力电子、电气工程、自动化等相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源发电、电动汽车、工业电源、电能质量治理等方向的科研人员、高校研究生以及具有1-5年工作经验的电力电子工程师;尤其适合正在开展高效率PFC电路研究或需要完成相关课题设计的技术人员。; 使用场景及目标:①深入理解交错并联图腾柱PFC变换器的工作原理与建模方法,掌握其在提升系统效率与降低输入电流畸变方面的技术优势;②学习并实践高性能PFC电路的双闭环控制、均流策略与软启动设计,提升仿真调试与参数整定能力;③借助提供的标准化仿真模板、计算工具与完整案例,快速搭建类似拓扑系统,支撑科研论文复现、项目开发或课程设计,显著提高研发效率与设计可靠性。; 阅读建议:建议结合文档中列出的仿真模型与Mathcad计算书同步操作,优先按照资源目录顺序循序渐进学习,重点关注控制环路的设计逻辑、PI参数整定方法与系统稳定性判据;推荐通过网盘链接下载全部资料,动手修改模型参数并观察响应变化,以加深对控制策略本质的理解,实现从“看懂”到“会用”的转化。

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文档系统整理了电力电子与电力系统领域的多项Simulink仿真资源,重点围绕“两相交错并联Boost电路仿真模型”展开,涵盖其在高功率密度、低输入电流纹波等性能优化方面的建模与控制实现。资源集合不仅包括Boost类变换器,还广泛涉及LLC谐振变换器(半桥、全桥、多相交错)、PFC功率因数校正电路(图腾柱、维也纳拓扑)、双向DC-DC变换器(Buck-Boost、CLLC)、PWM整流器及DAB双有源桥等多种典型电力电子拓扑结构的闭环控制系统设计。每个模型均强调动态响应分析、均流控制、软开关技术与稳定性验证,适用于新能源发电、电动汽车V2G系统、储能能量管理及充电桩等前沿应用场景,体现了较强的工程实践价值与科研参考意义。; 适合人群:面向电气工程、自动化、电力电子与电力传动等相关专业的高校本科生、研究生,以及从事电源设计、新能源系统开发、车载充电机、工业变流器研发的工程技术人员,尤其适合具备电路理论基础和Simulink/Matlab仿真经验的学习者进一步深化系统建模与控制策略研究。; 使用场景及目标:① 深入理解交错并联Boost电路的工作原理及其在抑制输入电流纹波、提升效率方面的作用机制;② 掌握利用Simulink构建复杂电力电子系统的建模方法,开展控制器设计(如PI、双闭环、VOC、SVPWM)与动态性能仿真;③ 为毕业设计、科研课题或实际工程项目提供可复用的技术参考,支撑高性能DC-DC变换器与AC-DC整流系统的开发需求。; 阅读建议:建议结合文档中列出的LLC、PFC、双向DC-DC等配套仿真案例进行横向对比学习,深入把握不同拓扑间的共性与差异;同时推荐配合提供的Mathcad计算书、设计报告与参考文献,完成从参数设计、模型搭建到仿真验证的全流程实践,全面提升理论分析与工程应用相结合的能力。

BMS应用软件开发 — 7 从特斯拉到问界:主流BMS硬件架构深度解析

本文深度解析了从特斯拉Model 3到问界M5的主流BMS硬件架构,探讨了BMS在电动汽车中的核心价值与应用软件开发的关键技术。通过对比分析两家厂商的硬件设计哲学、芯片选型策略及成本控制方法,揭示了BMS硬件系统如何影响电池性能与整车安全。文章特别分享了电压采样精度、EMC设计等实战经验,为BMS开发提供宝贵参考。

weixin_42554408的博客 457
上一篇: 【JZOJ 5272】神奇的重复序列
下一篇: 【JZOJ 5284】【清华集训2017模拟】超级翻转
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值