NOI25D2T2

news/2025/10/24 18:56:12/文章来源:https://www.cnblogs.com/SmpaelFx/p/19154202

NOI25D2T2 序列变换

DP


独立切黑祭(虽然花了很长时间)。思路比较自然,只是思维链比较长。

step 1

消出一个 \(0\) 后,只能向两侧继续消除。想到把操作刻画为从一个区间的中间向两边消除,即将 ###...### 变为 #<-...-0-...->#(此处假做法警告,我被坑了)。但这样的话两个区间的端点可能重复并且产生问题,于是转化一下角度,把一个区间从两边向中间消除,即将 ###...### 变为 0-...->#<-...-0

step 2

\(L_i\) 为向左能消除的最远点,\(R_i\) 为能向右消除的最远点。

考虑一下细节,如果消除过程中(不妨假设是向左消除)把 \([l,r]\) 消成了全 \(0\),那么下一步消 \(j-1\) 和一上来就从 \(j-1\) 向左消除是等价的,因此称 能消除 为数值始终 \(>0\)

step 3

考虑区间 \([l,r]\) 向中间消除有多少种可能的结果。设 \([l',r']=[l,R_l]\cap[L_r,r]\),则对于 \(i\in [l',r']\),要从两边消到 \(i\) 只需考虑 \(a_i\) 最终是否 \(\geq 0\);对于 \(i\notin [l',r']\) 必不可能合法。

step 4

考虑枚举 \([l,r]\),感觉还是不太好数合法的结果数。手玩一下,设以 \(l'\) 为中心,最终变为 \(a_{l'}-x-y\),则以 \(l'+1\) 为中心,最终变为 \(a_{l'+1}-(a_{l'}-x)-(a_{l'+1}-y)=-a_{l'}+x+y\),若不考虑解合法的限制,则二者竟然是相反数。同理,以 \(l'+1\) 为中心的结果和以 \(l'+2\) 为中心的结果相反。最终发现 \([l',r']\) 的结果一正一反交替,只需讨论 \(a_{l'}-x-y\)\(0\) 的大小关系即可,这可以预处理 \(\mathcal{O}(1)\) 进行。

step 5

进行两个 DP 分别计算两问就做完了。


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
typedef pair<ll,ll> pll;
template<typename T>
void chkmin(T &x,const T &y){x=min(x,y);}
template<typename T>
void chkmax(T &x,const T &y){x=max(x,y);}
const int inf=0x3f3f3f3f;
const ll infll=0x3f3f3f3f3f3f3f3f;
const int MOD=1000000007;
void add(int &x,int y){x+=y;if(x>=MOD) x-=MOD;
}
int qpow(int a,int b){int mul=1;for(;b;b>>=1){if(b&1) mul=(ll)mul*a%MOD;a=(ll)a*a%MOD;}return mul;
}
const int N=5005;
int n,a[N],b[N],c[N],L[N],R[N],s[N][N],st[2][N][15],mul[N],imul[N],sumc[2][N],g[N][N],dp2[N],sum[N];
ll sumb[N],f[N][N],dp1[N],mx[N];
#define log(x) (31-__builtin_clz(x))
int query(int t,int l,int r){int lg=log(r-l+1);return min(st[t][l][lg],st[t][r-(1<<lg)+1][lg]);
}
void solve(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) scanf("%d",&b[i]);for(int i=1;i<=n;i++) scanf("%d",&c[i]);for(int t=0;t<2;t++) for(int i=1;i<=n;i++) for(int lg=0;lg<15;lg++) st[t][i][lg]=inf;for(int i=1;i<=n;i++) st[i&1][i][0]=b[i];for(int t=0;t<2;t++) for(int lg=1;lg<15;lg++) for(int i=1;i+(1<<lg)-1<=n;i++) st[t][i][lg]=min(st[t][i][lg-1],st[t][i+(1<<(lg-1))][lg-1]);mul[0]=imul[0]=1;for(int i=1;i<=n;i++){sumb[i]=sumb[i-1]+b[i];mul[i]=(ll)mul[i-1]*c[i]%MOD,imul[i]=qpow(mul[i],MOD-2);sumc[i&1][i]=(sumc[i&1][i-1]+qpow(c[i],MOD-2))%MOD,sumc[(i&1)^1][i]=sumc[(i&1)^1][i-1];}// for(int i=1;i<=n;i++) printf("%d ",sumc[0][i]);printf("\n");for(int i=1;i<=n;i++){L[i]=R[i]=i,s[i][i]=0;for(int &j=L[i],sum=a[i];sum&&j>1&&a[j-1]>=sum;j--) s[i][j-1]=sum,sum=a[j-1]-sum;for(int &j=R[i],sum=a[i];sum&&j<n&&a[j+1]>=sum;j++) s[i][j+1]=sum,sum=a[j+1]-sum;}for(int l=1;l<=n;l++){for(int r=l+1;r<=n;r++){if(R[l]<L[r]){f[l][r]=-infll,g[l][r]=0;continue;}int l2=max(L[r],l),r2=min(R[l],r),x=a[l2]-s[l][l2]-s[r][l2];// printf("[%d,%d] [%d,%d] %d\n",l,r,l2,r2,x);if(x){int t=(l2&1)^(x<0);f[l][r]=sumb[r]-sumb[l-1]-query(t,l2,r2);g[l][r]=(ll)mul[r]*imul[l-1]%MOD*(sumc[t][r2]-sumc[t][l2-1]+MOD)%MOD;}else f[l][r]=sumb[r]-sumb[l-1],g[l][r]=(ll)mul[r]*imul[l-1]%MOD;// printf("f=%d g=%d\n",f[l][r],g[l][r]);}}sum[0]=1;for(int i=1;i<=n;i++){dp1[i]=-infll,dp2[i]=0;for(int j=1;j<=i;j++) chkmax(dp1[i],f[j][i]+mx[j-1]),add(dp2[i],(ll)g[j][i]*sum[j-1]%MOD);mx[i]=max(mx[i-1],dp1[i]),sum[i]=(sum[i-1]+dp2[i])%MOD;}printf("%lld %d\n",mx[n],sum[n]);
}
int main(){int T;scanf("%*d%d",&T);while(T--) solve();return 0;
}

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

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

相关文章

详细介绍:云手机远程控制的作用

详细介绍:云手机远程控制的作用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

数字人企业:数字人公司重点推荐与选择指南

数字人企业:AI浪潮下的产业新势力崛起 解码数字人企业技术壁垒与市场格局 从实验室到产业:数字人企业的创新突围路径 一、数字人企业排行榜:技术驱动下的行业领跑者 在元宇宙与AI技术的双重推动下,数字人企业正从概…

10.24模拟赛

チーム分け 题面 题意 每个点有限制形如这个点分的组人数 \(\le a_i\),问合法方案数。\(n\le 1000\) 题解 一个组内的限制只与 \(a_i\) 最小的元素相关,不妨将 \(a_i\) 从大到小排序延后计算贡献。 设 \(dp_{i,j}\) …

据说每邀请一位朋友加入Comet,您可以获得10刀乐奖励:D

Comet AI浏览器真的撒钱抢用户了! 最近OpenAI发布了AI浏览器Atlas,正式加入浏览器大战。 Perplexity马上就坐不住了,开启了撒钱抢人计划,现在只要分享Comet浏览器的邀请链接,好友通过链接下载并注册账户使用浏览器…

2025.10.24NOIP

T2.LCA \(n\)个点\(m\)条边无向图,第\(i\)条边的边权为\(i\),按以下方式建树,问以哪些节点做根节点能建出最小生成树,

writing sentences

1. The necessity of ... is defining feature of contemparay globalized society. 2. I am firmly of the conviction that the long-term advantages for .... outweight the .... 3. The most palpable is the psy…

小程序 访问第三方网页

// wxml文件 <web-view src="https://www.baidu.com" bindload="bindload" binderror="binderror"></web-view>// js文件 // 网页加载成功时触发此事件 bindload(res) { co…

王炸!OpenAI 发布 Atlas 浏览器!!

大家好,我是R哥。 说到 AI 浏览器,有大名鼎鼎的 Dia、Comet,谷歌的 Chrome + Gemini 也在蠢蠢欲动,似乎 AI 浏览器的战场还没有彻底打响,最近 OpenAI 也下场了。。 最近 OpenAI 亲自下场,推出了自家的 AI 浏览器…

国产开源数据库调研项目的LaTeX专业排版实践

国产开源数据库调研项目的LaTeX专业排版实践国产开源数据库调研项目的LaTeX专业排版实践 在上一篇文章《LaTeX 项目结构优化:从基础到专业》中,我们探讨了模块化LaTeX项目的基本结构。本文将通过一个实际项目——&qu…

Asterix cat-062 ,航班号字段的编码解码

Asterix cat-062 ,航班号字段的编码解码Data Item I062/245, Target Identification 解码:CQH87920d1238df9ca0 = 000011010001001000111000110111111001110010100000(这里二进制数要补零至48位)再按6比特分解成8段…

AI优化企业:GEO公司技术先驱

AI优化企业:解码智能时代的流量密码与商业增长引擎 2025年AI优化企业排行榜与全域流量实战指南 AI优化如何重塑企业数字竞争力? 在生成式AI重构搜索生态的2025年,企业竞争的核心已从“流量获取”转向“算法穿透”。…

题3

10.24 P5658 [CSP-S2019] 括号树 这个实际上就是给定一个括号序列\(a\),然后对于每一个\(i\),来说,求出\([1,i]\)的所有合法括号子串(发现这个其实只需要求以\(i\)为结尾的合法括号后缀然后做前缀和就行了)那么只…

CompletableFuture串联多个异步任务实践

CompletableFuture串联多个异步任务实践java 多线程中对于一个任务A完成了,任务B才开始;任务B完成了,任务C才开始;’任务C完成,任务D才开始;每个任务都是一个异步任务列。 废话少说,直接看代码,调试理解static…

课后作业4

https://files.cnblogs.com/files/blogs/847991/动手动脑4.zip?t=1761301142&download=true

吴恩达深度学习课程一:神经网络和深度学习 第四周:深度神经网络的关键概念

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

第171-172天:代理通讯篇无外网或不可达SockS全协议规则配置C2正反向上线解决方案

内网渗透代理scoks代理 解决漏洞利用和信息收集打点部分的问题 使用CS使用4a和5都可以,只是scoks5需要进行账号密码的认证 建立隧道之后,可以使用proxifier进行连接,然后填上CS服务器的IP和端口,隧道是目标主机和C…

cn域名隐私保护

cn域名隐私保护MU5735 R.I.P

城市基础设施安全运行监管平台

当我们漫步在城市街头,或许很少会想到脚下纵横交错的管网、头顶横跨而过的桥梁、地下穿梭的轨道交通,这些城市基础设施如同人体的“生命线”,时刻维系着城市的正常运行。而如今,一套名为“城市基础设施安全运行监管…

ZR 2025 NOIP 二十连测 Day 7

100 + 25 + 25 + 30 = 185, Rank 75/130.想 1h B 的正解 vs 打 D 15pts 的部分分。25noip二十连测day7 链接:link 题解:题目内 时间:4h (2025.10.24 14:00~18:00) 题目数:4 难度:A B C D\(\color{#FFC116} 黄\)*1…

CSP-S 37

10.2410.24 连续inf场没有切掉 t1 了\(\ldots\) 0+100+70+30=200 甚至 t1 是唯一爆蛋的。 2h 写 t1 获得 0pts 好成绩,剩下 2h 获得 200pts 。 难崩。 t1 第一眼:好像那道\(O(n^3)\) dp 。 第二眼:坏了回文串咋转移…