【UOJ UNR #1】争夺圣杯

本文介绍了一种使用单调栈解决UOJ213题目的算法思路,通过计算每个数字左侧第一个大于等于它的数及右侧第一个大于它的数,来确定不同长度区间内数字的贡献,并利用差分维护的方法更新答案。

来自FallDream的博客,未经允许,请勿转载,谢谢。


传送门

考虑直接对每个数字,统计它会产生的贡献。

单调栈求出每个数字左边第一个大等于他的数,右边第一个大于他的 (注意只能有一边取等)

假设左右两边分别有x1,x2个数,较大的是mx,较小的是mn

对于长度在(mx+1,mn+mx+1]的x,会产生mn+mx+1 - x - 1的贡献

对于长度在(mn,mx+1]的数,会产生 mn+1的贡献

对于长度在[1,mn]中的数x,会产生x的贡献。

差分维护即可

#include<iostream>
#include<cstdio>
#define MN 1000000
#define mod 998244353
using namespace std;
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int n,a[MN+5],s[MN+5],g[MN+5],top=0,q[MN+5],Lt[MN+5],Rt[MN+5],ans=0;
inline void R(int&x,int y){x+=y;x>=mod?x-=mod:0;}
int main()
{
    n=read();
    for(int i=1;i<=n;++i) a[i]=read();
    for(int i=1;i<=n;++i) 
    {
        while(top&&a[i]>=a[q[top]]) --top;
        Lt[i]=q[top]+1;q[++top]=i;
    }
    q[top=0]=n+1;
    for(int i=n;i;--i) 
    {
        while(top&&a[i]>a[q[top]]) --top;    
        Rt[i]=q[top]-1;q[++top]=i;
    }
    for(int i=1;i<=n;++i)
    {
        int mn=min(i-Lt[i],Rt[i]-i),y=mod-(a[i]%mod),mx=max(i-Lt[i],Rt[i]-i),z=a[i]%mod;
        if(mn>0) R(s[1],z),R(s[mn+1],y);
        R(g[mn+1],1LL*(mn+1)*z%mod),R(g[mx+2],1LL*(mod-mn-1)*z%mod);
        R(g[mx+2],1LL*(mn+mx+2)*z%mod);R(s[mx+2],y);
        R(g[mn+mx+2],1LL*(mod-mn-mx-2)*a[i]%mod);R(s[mn+mx+2],z);
    }
    for(int i=1;i<=n;++i)
    {
        R(g[i],g[i-1]);R(s[i],s[i-1]);    
        ans^=(1LL*s[i]*i+g[i])%mod;
    }
    printf("%d\n",ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/FallDream/p/uoj213.html

"Mstar Bin Tool"是一款专门针对Mstar系列芯片开发的固件处理软件,主要用于智能电视及相关电子设备的系统维护与深度定制。该工具包特别标注了"LETV USB SCRIPT"模块,表明其对乐视品牌设备具有兼容性,能够通过USB通信协议执行固件读写操作。作为一款专业的固件编辑器,它允许技术人员对Mstar芯片的底层二进制文件进行解析、修改与重构,从而实现系统功能的调整、性能优化或故障修复。 工具包中的核心组件包括固件编译环境、设备通信脚本、操作界面及技术文档等。其中"letv_usb_script"是一套针对乐视设备的自动化操作程序,可指导用户完成固件烧录全过程。而"mstar_bin"模块则专门处理芯片的二进制数据文件,支持固件版本的升级、降级或个性化定制。工具采用7-Zip压缩格式封装,用户需先使用解压软件提取文件内容。 操作前需确认目标设备采用Mstar芯片架构并具备完好的USB接口。建议预先备份设备原始固件作为恢复保障。通过编辑器修改固件参数时,可调整系统配置、增删功能模块或修复已知缺陷。执行刷机操作时需严格遵循脚本指示的步骤顺序,保持设备供电稳定,避免中断导致硬件损坏。该工具适用于具备嵌入式系统知识的开发人员或高级用户,在进行设备定制化开发、系统调试或维护修复时使用。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值