CF2045E 做题记录

前言

在别的博客你看不见这个玩意的
函数这个东西很烦人,\(min\) 可以很短也可以很长,有很多种方式表达,大部分题目会固定一部分问题剩下的问题可以很容易求出,通常固定的那一部分可以通过转化函数的表达形式求出,这个方面很妙但是很少的人能做到这个事情
其实是一个好题别浪费了

题意

定义一个

\[\begin{equation} f({l,r})=\left\{\begin{aligned}0 \quad m1=m2\\\min(m1,m2) \quad m1\ne m2\\\end{aligned}\right. \end{equation} \]

其中 \(m1=\max\limits_{i=l}^r a_i,m2=\max\limits_{i=l}^r b_i\)
\(\sum\limits_{l=1}^{n}\sum\limits_{r=l}^rf(l,r)*2^{n-r+l-3}\)

做法

相信大家上面的东西一定推出来了,因为这个是题目很显然也是最简单的一部分,那么接下来的话就是前言说的解放这个函数,他是分段的,很让人恼怒,所以转化一下变成

\[m1+m2-[m1=\max(m1,m2)]*m1-[m2=\max(m1,m2)]*m2 \]

这个式子分开处理,\(m1,m2\) 可以通过对于每一个数找到左边第一个超过他的和右边第一个不小于他的,然后计算他对 \(m1\) 的贡献,同理,在他的控制范围内找到左边不超过他的 \(b\) 和右边不超过他的 \(b\) 然后同样计算贡献即可,计算的贡献通过推式子计算这里不做赘述,读者可以自己计算。

代码

//谁能写这么难看的代码 
//不想要用swap两个数组计算结果了,我使用的ST表找而非单调栈
#include<algorithm>
#include<iostream>
#include<cstring>
#include<climits>
#include<cmath>
#define ll long longusing namespace std;
const int N=1e5+9;
const ll mod=998244353;
ll sta[N][23],stb[N][23],lg[N];
ll kms[N],n,a[N],b[N];inline ll querya(int l,int r){int tmp=lg[r-l+1];return max(sta[l][tmp],sta[r-(1<<tmp)+1][tmp]);
}
inline ll queryb(int l,int r){int tmp=lg[r-l+1];return max(stb[l][tmp],stb[r-(1<<tmp)+1][tmp]);
}inline ll ksm(ll x,int y){if(x==2 && y<=n){if(y<0) return 0;return kms[y];}ll res=1;x%=mod;// cout<<x<<endl;while(y){// cout<<res<<' '<<y<<endl;if(y&1)res=res*x%mod;x=x*x%mod;y>>=1;}return res;
}
inline void init(){kms[0]=1;for(int i=1;i<=n;i++)kms[i]=kms[i-1]*2%mod;for(int i=2;i<=n;i++)lg[i]=lg[i>>1]+1;for(int i=1;i<=n;i++){sta[i][0]=a[i];stb[i][0]=b[i];}for(int i=1;i<=lg[n];i++){for(int j=1;j+(1<<i)-1<=n;j++){sta[j][i]=max(sta[j][i-1],sta[j+(1<<i-1)][i-1]);stb[j][i]=max(stb[j][i-1],stb[j+(1<<i-1)][i-1]);}}
}int ltmax[N],rtmax[N];
ll ans;inline ll mul(ll x,ll y){return x*y%mod;}
inline ll del(ll x,ll y){return ((x-y)%mod+mod)%mod;}
inline ll add(ll x,ll y){return (x+y)%mod;}inline ll cost(int l,int r,int i){return del(ksm(2,n-i),ksm(2,n-r-1))*del(ksm(2,i-1),ksm(2,l-2))%mod;
}
inline void getcost1(){int lt,rt,mid;for(int i=1;i<=n;i++){lt=1,rt=i;ltmax[i]=i;while(lt<=rt){mid=lt+rt>>1;if(querya(mid,i)==a[i])rt=mid-1,ltmax[i]=mid;else lt=mid+1;}rtmax[i]=i;lt=i+1;rt=n;while(lt<=rt){mid=lt+rt>>1;if(querya(i+1,mid)<a[i])lt=mid+1,rtmax[i]=mid;else rt=mid-1;}// cout<<i<<' '<<ltmax[i]<<' '<<rtmax[i]<<endl;ans+=a[i]*cost(ltmax[i],rtmax[i],i);ans%=mod;}for(int i=1;i<=n;i++){lt=1,rt=i;ltmax[i]=i;while(lt<=rt){mid=lt+rt>>1;if(queryb(mid,i)==b[i])rt=mid-1,ltmax[i]=mid;else lt=mid+1;}rtmax[i]=i;lt=i+1;rt=n;while(lt<=rt){mid=lt+rt>>1;if(queryb(i+1,mid)<b[i])lt=mid+1,rtmax[i]=mid;else rt=mid-1;}ans+=b[i]*cost(ltmax[i],rtmax[i],i);ans%=mod;}return void();
}
//delete cost
inline void getcost2(){int lt,rt,mid;for(int i=1;i<=n;i++){if(a[i]<b[i]) continue;lt=1,rt=i;ltmax[i]=i;while(lt<=rt){mid=lt+rt>>1;if(querya(mid,i)==a[i] && queryb(mid,i)<=a[i])rt=mid-1,ltmax[i]=mid;else lt=mid+1;}rtmax[i]=i;lt=i+1;rt=n;while(lt<=rt){mid=lt+rt>>1;if(querya(i+1,mid)<a[i] && queryb(i,mid)<=a[i])lt=mid+1,rtmax[i]=mid;else rt=mid-1;}// cout<<"a "<<i<<' '<<ltmax[i]<<' '<<rtmax[i]<<' '<<a[i]*cost(ltmax[i],rtmax[i],i)<<endl;ans=del(ans,a[i]*cost(ltmax[i],rtmax[i],i));}for(int i=1;i<=n;i++){if(b[i]<a[i]) continue;lt=1,rt=i;ltmax[i]=i;while(lt<=rt){mid=lt+rt>>1;if(queryb(mid,i)==b[i] && querya(mid,i)<=b[i])rt=mid-1,ltmax[i]=mid;else lt=mid+1;}rtmax[i]=i;lt=i+1;rt=n;while(lt<=rt){mid=lt+rt>>1;if(queryb(i+1,mid)<b[i] && querya(i,mid)<=b[i])lt=mid+1,rtmax[i]=mid;else rt=mid-1;}// cout<<"b "<<i<<' '<<ltmax[i]<<' '<<rtmax[i]<<' '<<b[i]*cost(ltmax[i],rtmax[i],i)<<endl;ans=del(ans,b[i]*cost(ltmax[i],rtmax[i],i));}return void();
}int main(){ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];init();getcost1();// cout<<ans<<endl;getcost2();cout<<ans*ksm(kms[n],mod-2)%mod;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core WebApi 集成 MCP 协议完全指南

前言 Model Context Protocol (MCP) 是一个标准化协议,让 AI 客户端(如 Claude、ChatGPT 等)能够通过统一的接口调用你的 API。本文将详细介绍如何在 ASP.NET Core WebApi 项目中集成 MCP 支持,实现 AI 与你的服务…

深入解析:数字信号处理 第一章(离散时间信号与系统)【上】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

goldengate(ogg)日常维护

1.修改源端抽取进程从某个位置开始抽取GGSCI (rac01) 29> info extepEXTRACT EXTEP Last Started 2025-10-28 16:24 Status STOPPED Checkpoint Lag 00:00:03 (updated 00:00:36 ago) Log Read Chec…

关于curl-一个网址-报错-OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to

关于curl-一个网址-报错-OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection toPosted on 2025-10-28 16:32 520_1351 阅读(0) 评论(0) 收藏 举报背景:今天在一台Azure虚拟机上,使用curl 一个https网址时,…

电脑截图怎么往下拖着截图?4种方法教你轻松实现长页面截图(滚动截图超全教程)

想知道电脑截图怎么往下拖着截图?本文详细介绍4种实现长页面截图 / 滚动截图的方法,包括专业截图软件、浏览器扩展、系统拼接与QQ/微信截图。支持Win10/Win11,图文教程+下载链接,轻松截取网页、文档、代码等完整长…

2025年云南旅游租车公司最新服务推荐榜:芒市旅游包车/芒市旅游租车/云南旅游包车/专注体验与可靠,打造无忧旅途

随着旅游消费升级及个性化出行需求增长,旅游包车与租车服务已从传统旅游配套逐步发展为提升旅行体验的重要环节。2025年,随着云南旅游市场持续回暖与服务品质不断提升,游客对车辆安全、服务专业度、线路适配性等方面…

102302125 苏琎宇 数据采集第1次作业

用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。 在分析网站的数据结构和请求方式后,发现无法像普通分页网页那样简单…

哈希优化策略

哈希优化策略哈希优化策略算法题中,我们常通过将线性查找替换为哈希查找来降低算法的时间复杂度。我们借助一个算法题来加深理解。Q:给定一个整数数组 nums 和一个目标元素 target ,请在数组中搜索“和”为 target …

一站式开发速查表大全 - 覆盖主流编程语言与工具

这是一个全面的编程速查表集合项目,涵盖了从基础编程语言到现代开发框架的完整参考资料。包含JavaScript、Python、Java、Go等主流语言,以及React、Vue、Angular等前端框架,还有Docker、Kubernetes、Git等开发工具的…

gcc系编译器、调试器的应用和c/c++编译原理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

JAVA FX初次使用并制作辅助工具指南

JAVA FX初次使用并制作辅助工具指南先上功能截图讲讲第一次使用的体验。 JAVA FX还是非常友好很好使用的 IDEA新建FX项目的时候就能把很多功能都选上。 这些pom是适配了jdk21的,不同版本的fx组件适配jdk也不一样,我是…

Day6综合案例1-体育新闻列表

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

题解:AT_agc015_e [AGC015E] Mr.Aoki Incubator

原题链接:link。 自然想到建立坐标系,以速度为纵轴,初始点为横轴。 以样例二为例来分析:考虑将点两两连线: ` 其中红线为斜率为负数的线,容易知道点 \((x_i,v_i)\) 与点 \((x_j,v_j)\) 所连成的线的斜率为 \(\fr…

SNP特征通道数是什么意思

在《【已阅】cropformer.pdf》的基因组预测场景中,“SNP特征通道数”本质是SNP基因型经过编码后,每个SNP位点对应的数值特征所占用的“维度/通道数量”,是Hyena算子、CNN等模型组件处理SNP数据时的核心维度参数(d_…

CF1482E Skyline Photo

绝世唐题,为啥没有人写题解啊。 首先发现划分成若干个段,设一个 DP \(f_i\) 表示以 \(i\) 结尾的分段方式的最大贡献,那么朴素转移就是你去枚举区间取 \(\max\)。 发现是求 \(h\) 的最小值所对应的 \(b\),比较典的…

sqlserver 添加或修改字段

添加字段ALTER TABLE 表名 ADD 列名 数据类型 [约束];修改字段 ALTER TABLE 表名 ALTER COLUMN 列名 新数据类型;

最小瓶颈生成树

作业是鸽子更新的动力。\(\text{MBST}\)(\(\text{Minimum Bottleneck Spanning Tree}\))指的是求一颗生成树,其中最大的边权最小(所以也叫 \(\text{min-max spanning tree}\))。和最小树形图一样,也有有向图版本…

Linux系统常用操作指令简明指南

Linux系统常用操作指令简明指南 熟练掌握Linux命令是每个开发者的基本功。这份指南凝聚了我多年开发经验中的精华,将帮助您提高工作效率,解决实际问题。请记住,Linux哲学的核心在于"每个工具做好一件事,然后将…

小程序语音通话让智能设备会“说话”

小程序语音通话让智能设备会“说话”在万物互联的智能时代,如何让智能设备与用户建立更自然、更高效的连接,成为产品脱颖而出的关键。传统的APP推送常因步骤繁琐、易被淹没而效率低下,微信小程序语音通话应运而生,…