题解 | #jzgg,云哥,沙烬巨巨为什么这么强#

jzgg,云哥,沙烬巨巨为什么这么强

https://ac.nowcoder.com/acm/contest/17561/G

这个题读明白了就会发现就是lis预处理一下然后进行区间dp的板子题

//标程
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 1110;
const int INF = 0x3f; //初始化的最大值
long long sum[maxn];
long long a[maxn];
long long dp[maxn][maxn];

long long LIS(string s) {
    long long lis[maxn] = {0};
    long long ans = 0;
    long long len = s.size();
    for(int i = 0; i < len; i++)
        lis[i] = 1;
    for (int i = 1; i <= len; i++)
        for (int j = 0; j < i; j++)
            if (s[j] < s[i])
                lis[i] = max(lis[i], lis[j] + 1);
    for (int i = 0; i < len; i++)
        ans = max(ans, lis[i]);
    return (ans * len * int(s[0]));
}

int main(void) {
    int n;
    cin >> n;
    memset(dp, INF, sizeof dp);
    for (int i = 1; i <= n; i++) {
        string s;
        cin >> s;
        a[i] = LIS(s);
        sum[i] = sum[i - 1] + a[i];
        dp[i][i] = 0;
    }
    for (int len = 2; len <= n; len++) {
        for (int i = 1, j = len; j <= n; i++, j++) {
            for (int k = i; k < j; k++) {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]);
            }
        }
    }
    cout << dp[1][n] << endl;
    return 0;
}
全部评论
真的十分抱歉 我再此谢罪 G题的的数据出锅了 因此一些使用优先队列的算法把题目过了 是我的错 真的十分抱歉,数据已经补上了,真的十分抱歉。
点赞 回复 分享
发布于 2021-06-28 00:52

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务