22hhlin


私信TA

用户名:dotcpp0703740

访问量:4163

签 名:

好好学算法

等  级
排  名 8715
经  验 1209
参赛次数 1
文章发表 17
年  龄 20
在职情况 学生
学  校 汕头大学
专  业 计算机科学与技术

  自我简介:

解题思路: 可以先求最长可以组成的序列,相减就是最少删除了。


参考代码:

#include <bits/stdc++.h>

using namespace std;


const int N = 100010;

struct T {

    int l, r;

}w[N];

int dp[N], g[10];


int main(void) {

    int n;

    cin >> n;

    for (int i = 1; i <= n; i++) {

        string s;

        cin >> s;

        w[i] = {s[0] - '0', s.back() - '0'};

    }    

    for (int j = 1; j <= n; j++) {

        dp[j] = 1;

        dp[j] = max(dp[j], g[w[j].l] + 1);

        g[w[j].r] = max(dp[j], g[w[j].r]);

    }

    int ans = -1;

    for (int i = 1; i <= n; i++) {

        ans = max(ans, dp[i]);

    }

    printf("%d\n", n - ans);

    return 0;

}


 

0.0分

2 人评分

  评论区

  • «
  • »