zoukankan      html  css  js  c++  java
  • Codeforces Round #620 (Div. 2) (A~D)

    比赛链接:Here

    A题挺水的就不写了

    1304B - Longest Palindrome

    题意:

    • 输入 (m) 个长度为 (n) 的字符串,问这些字符串能组成的最长回文串有多长。

    思路:

    1. 贪心的思想,我们只需要用当前字符串以及寻找该字符串的反向串是否存在,如果存在的话,就把该字符串与它的反向串添加进答案串的首尾。
    2. 注意中间的那个字符串,如果我们输入的字符串中有回文串,且该串的反向串也不存在的话,可以把该串单独放在答案串的中间。
    string s[110];
    map<string, int>mp;
    bool check(string s) {
        int n = s.size();
        for (int i = 0, j = n - 1; i <= n / 2; ++i, j--)
            if (s[i] != s[j]) return 0;
        return 1;
    }
    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int n, m; cin >> n >> m;
        for (int i = 0; i < n; ++i) cin >> s[i], mp[s[i]] = 1;
        string ans, z, t;
        bool f = 0;
        for (int i = 0; i < n; ++i) {
            if (check(s[i])) z = s[i], f = 1;
            else {
                reverse(s[i].begin(), s[i].end());
                string tmp = s[i];
                reverse(s[i].begin(), s[i].end());
                if (mp[tmp] == 1) {
                    t += tmp;
                    mp[tmp] = 0;
                }
            }
            mp[s[i]] = 0;
        }
        ans += t;
        reverse(t.begin(), t.end());
        if (f) ans += z;
        ans += t;
        cout << int(ans.size()) << "
    ";
        if (int(ans.size()))cout << ans << "
    ";
    }
    

    1304C - Air Conditioner

    题意:

    • 输入 (n),再输入 (n)​ 个顾客的信息,分别为客人来的时间,客人需要的温度范围,每分钟可以进行一次三种操作之一:升温,降温和不变。问能否满足所有客人的需求。

    思路:

    一开始写复杂了,这道题本质就是暴力模拟,要满足所有客人的需求,那么就用当前客人与下一个客人的时间差来取温度的最大(r)和最小值(l),当下一个客人来时再判断这个客人的需求是否在这个[l,r]之内。

    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int _; for (cin >> _; _--;) {
            ll n, m;
            cin >> n >> m;
            ll t = 0, l = m, r = m;
            bool f = 1;
            while (n--) {
                ll ti, x, y;
                cin >> ti >> x >> y;
                l = l - (ti - t), r = r + (ti - t);
                t = ti;
                l = max(l, x), r = min(r, y);
                if (l > r) f = 0;
            }
            cout << (f ? "YES
    " : "NO
    ");
        }
    }
    

    1304D - Shortest and Longest LIS

    题意:

    • 给定一个 (n) ,与构造规则,要求构造出符合构造规则的LIS最小和最大的串

    思路:

    原本想试试DP,写状态转移发现最短序列的话,对于一串大于号,我们把当前未使用过的比较大的数尽可能的放在左边。最长序列就是反过来,尽可能的放未使用过的小的数放在左边即可

    简单来说就是贪心

    const int N = 2e5 + 10;
    ll a[N];
    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int _; for (cin >> _; _--;) {
            int n; string s;
            cin >> n >> s;
            int nn = n, lst = 0;
            for (int i = 0; i < n; ++i) {
                if (s[i] == '>' || i == n - 1) {
                    for (int j = i; j >= lst; j--)a[j] = nn--;
                    lst = i + 1;
                }
            }
            for (int i = 0; i < n; ++i) cout << a[i] << " 
    "[i == n - 1];
            nn = 1, lst = 0;
            for (int i = 0; i < n; ++i) {
                if (s[i] == '<' || i == n - 1) {
                    for (int j = i; j >= lst; j--) a[j] = nn++;
                    lst = i + 1;
                }
            }
            for (int i = 0; i < n; ++i) cout << a[i] << " 
    "[i == n - 1];
        }
    }
    

    E,F不会做....明明挺多人都过了QAQ

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    IDEA控制台输出中文乱码问题
    JAVA web 框架集合
    去掉VSS控制
    .Net Core .Net Core V1.0 创建MVC项目
    .Net Core .Net Core的学习
    WebService 天气预报webservice接口
    SMS106 短信验证码接口测试
    Regex 常用的正则表达式
    Jquery Plugins Jquery Validate
    MVC 路由调试工具-RouteDebugger
  • 原文地址:https://www.cnblogs.com/RioTian/p/15177331.html
Copyright © 2011-2022 走看看