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

前缀和优化 DP

常见的 DP 优化:

优化状态:重新设计状态来减少时间/空间/代码复杂度,如状压 DP。

优化转移:用特定的方法来转移,使转移更快。

例题

力扣1871 跳跃游戏 (Gala Game)

\(dp[i]\) 为可否跳到 \(i\) 点。

转移:

\[dp[i]=\sum_{j=\max(0,i-maxJump)}^{\max(0,i-minJump)}dp[j]>0 \]

直接扫一遍的话,时间复杂度为 \(O(n^2)\),会炸。

注意到没有修改,且求 \(dp[i]\) 所需要的 \(dp[j]\) 是连续的,那么不难想到前缀和。

时间复杂度降为 \(O(n)\) 可过。

这里就有了一个 DP 优化的流程:先打出暴力转移,然后看转移可以被什么方法优化

一定要注意边界问题!搞清楚前缀和什么时候该 -1,什么时候直接取 0。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int dp[1000005],pre[1000005];
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int L,R;string s;cin>>L>>R>>s;int n=s.size();dp[0]=1;for(int i=0;i<L;i++) pre[i]=1;for(int i=L;i<n;i++){int l=i-R,r=i-L;if(s[i]=='0') dp[i]=(pre[r]-(l<=0?0:pre[l-1])!=0);pre[i]=pre[i-1]+dp[i];}if(dp[n-1]) cout<<"Yes";else cout<<"No";return 0;
}

P2513 [HAOI2009] 逆序对数列

\(dp[i,j]\) 表示插入了前 \(i\) 个数,产生的逆序对为 \(j\) 的排列的方案数。

转移比较显然:

\[dp[i][j] = \sum_{k=0}^{\min(j, i-1)} dp[i-1][j-k] \]

复杂度 \(O(n^2 k)\) 会炸。

发现这个转移式子就是上一行连续的一段,考虑前缀和优化。

定义前缀和数组:\(sum\)

\[sum[j] = \sum_{x=0}^{j} dp[i-1][x] \]

转移变为:

\[dp[i][j] = sum[j] - sum[j-i] \]

时间复杂度降为 \(O(nk)\) 可过。

还是那个思想:先写暴力转移,然后观察可以被什么方法优化。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int dp[5005][5005];
int sum[5005];
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int n,k;cin>>n>>k;dp[1][0]=1;for(int i=2;i<=n;i++){sum[0]=dp[i-1][0];for(int j=1;j<=k;j++) sum[j]=(sum[j-1]+dp[i-1][j])%mod;for(int j=0;j<=k;j++){if(j<i) dp[i][j]=(sum[j]+mod)%mod;else dp[i][j]=(sum[j]-sum[j-i]+mod)%mod;}}cout<<dp[n][k];return 0;
}

练习题:AT_dp_m Candies

P1107 [BJWC2008] 雷涛的小猫

牛客33634G 小人国的粉刷匠

ABC253E Distance Sequence

一定注意转移时的范围!极为容易因为小细节炸掉!

http://www.jsqmd.com/news/409082/

相关文章:

  • MICON-Bench Benchmarking and Enhancing Multi-Image Context Image Generation in Unified Multimodal Mo
  • DeepSeek广告服务商联系方式 - 品牌2025
  • 2026年广州江诗丹顿手表维修评测与推荐:非官方维修点选择与售后网点服务指南 - 十大品牌推荐
  • 2026年广州江诗丹顿手表维修推荐评测:非官方维修点榜单与售后网点服务选择指南 - 十大品牌推荐
  • AI人工智能(十六)错误示范http文件处理—东方仙盟练气期
  • 2026年广州家庭搬家公司推荐评测排行榜:告别搬家烦恼,轻松开启新生活 - 十大品牌推荐
  • 2026年广州家庭搬家公司评测推荐榜单:告别杂乱与纠纷,轻松搬迁全攻略 - 十大品牌推荐
  • 2026年广州家具搬运公司推荐评测榜单:告别杂乱与破损,专业团队让搬迁无忧 - 十大品牌推荐
  • 2026年广州家庭搬家公司评测推荐榜单:告别杂乱与焦虑,轻松搬迁新家指南 - 十大品牌推荐
  • 在DeepSeek做广告联系哪个服务商? - 品牌2025
  • 2026 2.23 - 2026 3.1 日做题题解
  • 宽度学习旋转机械智能故障诊断【附代码】
  • DeepSeek广告服务商?联系谁? - 品牌2025
  • 欧姆龙PLC CP1E与柯力XK3101电子称重仪表的Modbus RTU通信及拓展
  • 深沟球轴承外滚道偏转缺陷建模与动力学分析【附代码】
  • 从单一到融合:机器学习、多模型学习与大语言模型的全面综述
  • 2026年2月24日
  • MySQL从入门到精通:一份全面的数据库实战指南
  • 春节单位发的京东e卡如何回收? - 京顺回收
  • 上海人工智能实验室重磅发布:AI正在学会“偷鸡摸狗“?
  • n8n 节点矩阵总览(分层结构 + 云图 + 教程索引)
  • 波士顿大学与亚马逊联手:让AI画图速度飞跃3倍的智能补丁技术
  • 公共安全能力建设专项技术方案——城市公共空间实时预测与前向布控辅助决策系统
  • 2026最新云南本地游旅行社品牌TOP10推荐:权威榜单发布,多元需求精准适配 - 十大品牌榜
  • QPACK、单向流、帧解析:逐行拆解Nginx HTTP/3的13个源文件,看HTTP/3请求到底怎么跑起来的
  • 20260224 模拟测 总结
  • 责任珠宝业委员会(RJC)认证全方位介绍:珠宝行业可持续发展的标杆
  • 谷歌DeepMind突破:噪声训练法提升图像生成效率数倍
  • 题解:P15148 [SWERC 2024] Divine Gifting
  • 全功能爬虫框架:Botasaurus 的详细使用(现代化、反检测、高并发的智能爬虫框架)