ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

248G

2022-08-28 15:02:16  阅读:154  来源: 互联网

标签:int MAX 更新 区间 248G dp define


P3146 [USACO16OPEN]248 G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

  • 这题的dp是i到j全部合并的最大结果,所以dp[1][n]并不是最终结果
  • n^3区间递归,在子区间左边和右边相等时可以更新dp值,但要注意不能是0,(如果是0代表这两个小区间之前更本就没有更新过,也就是无法合并,那么这时候再更新就会把大区间更新 成1,出现错误
  • 因为并不一定是全部合并完了,所以答案不是dp[1][n],需要在每次更新的时候记录最大值
// https://www.luogu.com.cn/problem/P3146
#include <bits/stdc++.h>
using namespace std;
#define N 1e5
#define INF 2e9
#define MAX 1000

int n;
int dp[MAX][MAX], ans;
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> dp[i][i];
    for (int step = 2; step <= n; step++)
        for (int l = 1, r = l + step - 1; r <= n; l++, r++)
            for (int k = l; k < r; k++)
                if (dp[l][k] && dp[l][k] == dp[k + 1][r])
                    dp[l][r] = max(dp[l][r], dp[l][k] + 1), ans = max(ans, dp[l][r]);
    printf("%d", ans);
}

 

标签:int,MAX,更新,区间,248G,dp,define
来源: https://www.cnblogs.com/Wang-Xianyi/p/16632762.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有