zoukankan      html  css  js  c++  java
  • [CF1183E] Subsequences (easy version)

    [CF1183E] Subsequences (easy version) - BFS

    Description

    给你一个长度为 (n(nle 100)) 的字符串,找出其中 (k(k le 100)) 个不同子序列(可不连续),使得代价(删除字符数)最小。

    Solution

    考虑 BFS,用 map 去重,每次枚举删除哪个字符,这样复杂度在 (O(nk^2))

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    int n, m;
    map<string, int> mp;
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> n >> m;
        string str;
        cin >> str;
    
        queue<string> que;
        que.push(str);
    
        int ans = 0;
    
        while (que.size() && m)
        {
            string s = que.front();
            que.pop();
    
            if (mp[s])
                continue;
            mp[s] = 1;
            m--;
            ans += n - s.length();
            if (m == 0)
            {
                cout << ans << endl;
                return 0;
            }
    
            for (int i = 0; i < s.length(); i++)
            {
                string t = s;
                t.erase(t.begin() + i);
    
                que.push(t);
            }
        }
    
        cout << -1 << endl;
    }
    
  • 相关阅读:
    正交相机下实现滚轮按钮拖动,滚动滚轮缩放的功能
    C#标记 [已弃用] 的方法
    JDBC-Mybatis-Hibernate
    Data Structures and Algorithm Analysis in Java
    Maven
    Java面试
    Bootstrap
    CSS3
    HTML5
    JSON
  • 原文地址:https://www.cnblogs.com/mollnn/p/14619526.html
Copyright © 2011-2022 走看看