真正题解
2024-05-15 16:45:07
发布于:浙江
28阅读
0回复
0点赞
看了一圈ac的代码大多数都有问题,题目要求是1e5的数据,但是1000内就能过,
嗯。。。 只能说数据非常水,很明显得用滚动数组优化dp。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5+5;
ll dp[2][N];
int main()
{
memset(dp,0x3f,sizeof(dp));
int n ;
cin >> n;
int p = 0;
cin >> dp[p][1];
ll t;
ll ans = 1e9;
for(int i = 2; i <= n ; i++){
for(int j = 1 ; j <= i*2-1 ; j++){
cin >> t;
if(j == 1){
dp[p^1][j] = dp[p][j]+t;
}else if(j == 2){
dp[p^1][j] = min(dp[p][j-1],dp[p][j])+t;
}else {
dp[p^1][j] = min(dp[p][j-1],min(dp[p][j-2],dp[p][j]))+t;
}
//cout << dp[p^1][j] << " ";
if(i == n){
ans = min(dp[p^1][j],ans);
}
}
p ^= 1;
//cout << endl;
}
cout << ans;
return 0;
}
全部评论 1
输入就n^2了 最多1e4吧
2024-05-15 来自 浙江
0
有帮助,赞一个