E98 线性DP P10741 [SEERC 2020] Fence Job
视频链接:E98 线性DP P10741 [SEERC 2020] Fence Job_哔哩哔哩_bilibili
P10741 [SEERC 2020] Fence Job - 洛谷
// 线性DP O(n^2) #include <bits/stdc++.h> using namespace std; const int N=3005,M=1e9+7; int n,a[N],f[N][N]; signed main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) f[i][0]=1; for(int i=1,l,r;i<=n;i++){ for(l=i;a[l-1]>a[i];l--); for(r=i;a[r+1]>a[i];r++); for(int j=1;j<=n;j++){ f[i][j]=f[i-1][j]+f[i][j-1]*(l<=j&&j<=r); f[i][j]%=M; } } cout<<f[n][n]; }
// 线性DP O(n^2) #include<bits/stdc++.h> using namespace std; const int N=3005,M=1e9+7; int n,a[N],f[N]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); f[0]=1; for(int i=1,l,r;i<=n;i++){ for(l=i;a[l-1]>a[i];l--); for(r=i;a[r+1]>a[i];r++); for(int j=l;j<=r;j++){ f[j]+=f[j-1]; f[j]%=M; } } cout<<f[n]; }
AT_agc058_b [AGC058B] Adjacent Chmax - 洛谷
// 线性DP O(n^2) #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int mod=998244353; int n,a[5005],f[5005]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); f[0]=1;a[0]=a[n+1]=n+1; for(int i=1,l,r;i<=n;i++){ for(l=i;a[l-1]<a[i];l--); for(r=i;a[r+1]<a[i];r++); for(int j=l;j<=r;j++) f[j]=(f[j]+f[j-1])%mod; } cout<<f[n]; }
分类:
E 动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!