关于动态规划(Dynamic Programming)的若干思考 ------ [4.坐标dp]
1单层 2多层 3也是多层但需要高精(int128也能过)
3个题本质上都是区间dp
矩形取数<1>
领域展开
#include<bits/stdc++.h>
#define ll __int128
const int maxn=6666;
using namespace std;
ll f[maxn][maxn],p[maxn];
int a[maxn];
ll ans;
int n;
void out(ll x)
{
if(x==0) return;
if(x) out(x/10);
putchar(x%10+'0');
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++) cin>>a[i];
p[0]=1;
for(int i=1;i<=n;i++) p[i]=p[i-1]<<1;
for(int i=1;i<=n;i++)
for(int j=n;j>=i;j--)
f[i][j]=max(f[i-1][j]+p[n-j+i-1]*a[i-1],f[i][j+1]+p[n-j+i-1]*a[j+1]);
for(int i=1;i<=n;i++)
ans=max(ans,f[i][i]+a[i]*p[n]);
if(ans==0) cout << 0;
else out(ans);
return 0;
}
矩形取数<2>
领域展开
#include<bits/stdc++.h>
#define ll __int128
const int maxn=6666;
using namespace std;
ll f[maxn][maxn],p[maxn];
int a[maxn];
ll ans;
int n;
void out(ll x)
{
if(x==0) return;
if(x) out(x/10);
putchar(x%10+'0');
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++) cin>>a[i];
p[0]=1;
for(int i=1;i<=n;i++) p[i]=p[i-1]<<1;
for(int i=1;i<=n;i++)
for(int j=n;j>=i;j--)
f[i][j]=max(f[i-1][j]+p[n-j+i-1]*a[i-1],f[i][j+1]+p[n-j+i-1]*a[j+1]);
for(int i=1;i<=n;i++)
ans=max(ans,f[i][i]+a[i]*p[n]);
if(ans==0) cout << 0;
else out(ans);
return 0;
}
矩形取数<3>
领域展开
#include<bits/stdc++.h>
#define ll __int128
using namespace std;
const int maxn=666;
ll f[maxn][maxn],p[maxn];
int n,m,a[maxn];
ll ans;
void out(ll x)
{
if (x==0) return;
if (x) out(x/10);
putchar(x%10+'0');
}
ll dp()
{
memset(f,0,sizeof(f));
for(int i=1;i<=m;i++)
for(int j=m;j>=i;j--)
f[i][j]=max(f[i-1][j]+p[m-j+i-1]*a[i-1] , f[i][j+1]+p[m-j+i-1]*a[j+1]);
ll tot=0;
for(int i=1;i<=m;i++) tot=max(tot,f[i][i]+a[i]*p[m]);
return tot;
}
int main()
{
cin >> n >> m;
p[0]=1;
for(int i=1;i<=m;i++) p[i]=p[i-1]<<1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d",a+j);
ans+=dp();
}
if(ans==0) cout << 0;
else out(ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】