当前位置: 首页 > news >正文

P14169

题目。

看一下特殊性质,考虑 dp。

\(dp_{i,j,z}\) 表示李老师在第 \(i\) 分钟站在 \(j\) 后体力为 \(z\) 的最大怒气值。

\[\operatorname{calc}(i,j,x) = \sum_{t= \max (1,j-x)}^{min(n,j+x)}a_{i,t} \]

则有 \(dp_{i,j,z}= \max (dp_{i-1,la,z-|j-la| }+\operatorname{calc}(i,j,x)),la \in [1,n]\)

时间是 \(O(N^4)\) 的,空间是 \(O(N^3)\) 的,发现转移只用到了前面的值于是滚动优化到 \(O(N^2)\),时间继续优化转移。

\[dp_{i,j,z}= (\max dp_{i-1,la,z-|j-la| })+\operatorname{calc}(i,j,x),la \in[1,n] \]

\(\operatorname{calc}(i,j,x)\) 可以前缀和优化掉,然后去绝对值。

\[dp_{i,j,z}= \begin{cases} (\max dp_{i-1,la,z-j+la })+\operatorname{calc}(i,j,x),la \le j \\(\max dp_{i-1,la,z+j-la })+\operatorname{calc}(i,j,x),la \ge j \\ \end{cases} \]

考虑预处理前缀和后缀。

\(pr_{i,v,j}=\max dp_{i-1,la,v+la},la \le j\)\(v\) 表示 \(z-j\)),

\(suf_{i,v,j}=\max dp_{i-1,la,v-la},la \ge j\)\(v\) 表示 \(z+j\))。

\(dp_{i,j,z}= \max (pr_{i,z-j,j},suf_{i,z+j,j})+\operatorname{calc}(i,j,x)\)

最后时间复杂度为 \(O(N^3)\)

注意 \(pr\) 的下标可能为负数要加偏移量,以及一些边界问题。

code
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i,l,r) for(int i=(l);i<=(r);++i)
#define per(i,r,l) for(int i=(r);i>=(l);--i)const int N=305;
int n,m,x,k,a[N][N],dp[2][N][N],pr[N<<1][N],suf[N<<1][N];
int calc(int i,int b,int x){return a[i][min(b+x,n)]-a[i][max(0,b-x-1)];}
void solve(){cin>>n>>m>>x>>k;int now=1;rep(i,1,m) rep(j,1,n) cin>>a[i][j],a[i][j]+=a[i][j-1];memset(dp,0,sizeof dp);memset(pr,0,sizeof pr);memset(suf,0,sizeof suf);const int ad=n;rep(i,1,m){now^=1;memset(dp[now],0,sizeof dp[now]);rep(j,1,n)rep(z,0,k)dp[now][j][z]=max(pr[z-j+ad][j],suf[z+j][j])+calc(i,j,x);rep(zj,-n,k)rep(la,1,n){if(zj+la>k||zj+la<0) continue;pr[zj+ad][la]=max(dp[now][la][zj+la],pr[zj+ad][la-1]);}rep(zj,1,n+k)per(la,n,1){if(zj-la<0||zj-la>k) continue;suf[zj][la]=max(dp[now][la][zj-la],suf[zj][la+1]);}}int ans=0;rep(j,1,n) rep(z,0,k) ans=max(ans,dp[now][j][z]);cout<<ans<<'\n';
}
int main(){cin.tie(0)->ios::sync_with_stdio(false);int T=1;cin>>T;while(T--) solve();
}
http://www.jsqmd.com/news/826693/

相关文章:

  • 开源实时监控告警引擎OpenAlerts:从原理到生产部署实战
  • AI叙事引擎:构建可控故事生成系统的架构与实战
  • RX140低功耗电容触摸设计:从原理到实践,实现超长待机
  • 考古现场数据智能治理新范式(NotebookLM+地层学语义建模深度解析)
  • Java-Callgraph2:Java静态分析工具终极指南
  • PhonePi-MCP:基于MCP协议实现AI智能体自动化操控Android手机
  • Llama 的演变:从 Llama 1 到 Llama 3.1
  • 背了那么久的慢 SQL 八股,不如动手跑一遍 EXPLAIN
  • 基于CircuitPython与CRICKIT的仿生机械手制作:从PWM控制到交互实现
  • 基于哈希匹配的PT断种自动化修复工具Reseed部署与实战
  • 感统训练一般要坚持多久才会有效果?
  • 企业级AI智能体评测平台AgentLab:构建、评估与部署实战指南
  • LLM长对话上下文失控:原理、风险与工程缓解方案
  • 基于CircuitPython与BLE的无线手势鼠标:从传感器到HID设备的实践
  • 国产替代浪潮下,琳科森:深耕半导体封装胶膜,做 “小而精” 的硬核材料企业
  • AI规则引擎:从自然语言到智能决策的技术实践
  • Nacos 服务端日志文件过大如何配置 logback 进行滚动切割?
  • 2026年度数字交友与辅助沟通软件测评:拯救“话题终结者”,谁在真正解决单身痛点?
  • Boss-Key:Windows用户必备的窗口隐私保护神器,告别尴尬瞬间
  • 从技能树到技能图谱:用开源工具构建结构化个人技术档案
  • 终极免费视频下载解决方案:Parabolic让你轻松获取200+平台内容
  • AI智能体配置管理:从环境变量到结构化配置的工程实践
  • 基于Vue 3的AI对话应用脚手架chat-easy:架构解析与二次开发实战
  • 5个维度重新理解IPAdapter Plus:AI图像引导生成的核心能力
  • 基于Code Llama的本地AI编程助手:VSCode插件部署与优化实战
  • Qgis二次开发-QgsAnnotationItem实战:构建交互式地图标注系统(文字、SVG、PNG/JPG)
  • 2026年值得推荐的陶瓷公司请选择佛山金博达陶瓷有限公司 - 品牌推广大师
  • 亿图脑图高级技能:从思维建模到生产力提升的完整指南
  • autoloom:自动化工作流编排框架的设计原理与实践指南
  • 仙工智能获IPO备案:半年营收1.58亿 亏5059万