专栏文章
P11248 [GESP202409 七级] 矩阵移动
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minpn3e4
- 此快照首次捕获于
- 2025/12/02 06:18 3 个月前
- 此快照最后确认于
- 2025/12/02 06:18 3 个月前
把DP写在脸上的一道题
状态:
表示位置为且还可以转换个时的最大得分
状态转移方程:
- 当是1时:
- 当是0时:
- 当是?时: 前提是
至于为什么会TLE,只能说这题卡常,太缺德了
CPP#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn(5e2+10);
int T,n,m,x;
int dp[maxn][maxn][maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--){
int maxx(0);
cin>>n>>m>>x;
memset(dp,0,sizeof(dp));
for(int i(1);i<=n;++i){
for(int j(1);j<=m;++j){
char ch;
cin>>ch;
for(int k(0);k<=x;++k){
dp[i][j][k]=max(dp[i-1][j][k],dp[i][j-1][k])+(ch=='1');
if(k&&ch=='?'){
dp[i][j][k]=max(dp[i][j][k],max(dp[i-1][j][k-1],dp[i][j-1][k-1])+1);
}
}
}
}
for(int k(0);k<=x;++k){
maxx=max(maxx,dp[n][m][k]);
}
// printf("%d\n",maxx);
cout<<maxx<<'\n';
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...