zoukankan      html  css  js  c++  java
  • Codeforces Round #690 (Div. 3)

    Codeforces Round #690 (Div. 3)

    A - Favorite Sequence

    按着题意读入, 顺序输出完事

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n;
            rep (i, 1, n) {
                if (i <= (n + 1 >> 1)) cin >> a[i * 2 - 1];
                else cin >> a[n - i + 1 << 1];
            }
            rep (i, 1, n) cout << a[i] << ' '; cout << '
    ';
        }
        return 0;
    }
    

    B - Last Year's Substring

    模拟, 比A麻烦

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> s + 1;
            bool f = 0;
            if (s[1] == '2' && s[2] == '0' && s[3] == '2' && s[4] == '0') f = 1;
            else if (s[n - 3] == '2' && s[n - 2] == '0' && s[n - 1] == '2' && s[n] == '0') f = 1;
            else if (s[1] == '2' && s[2] == '0' && s[3] == '2' && s[n] == '0') f = 1;
            else if (s[1] == '2' && s[2] == '0' && s[n - 1] == '2' && s[n] == '0') f = 1;
            else if (s[1] == '2' && s[n - 2] == '0' && s[n - 1] == '2' && s[n] == '0') f = 1;
            cout << (f ? "YES
    " : "NO
    ");
        }
        return 0;
    }
    

    C - Unique Number

    就9个数, 肯定不用0, 从9各位, 开始放就完事

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; int i;
            for (i = 1; i <= 9 && n; ++i) a[i] = min(n, 10 - i), n -= a[i];
            if (i == 1 || n)  cout << "-1";
            else while (--i) cout << a[i]; cout << '
    ';
        }
        return 0;
    }
    

    D - Add to Neighbour and Remove

    无非是把序列分段, 每段的和一样, 直接枚举每段的首尾dp完事, 用unordered_map判断是否能转移

    复杂度 (O(n^2)) 有个unordered_map的常数, 这次最喜欢的一道题

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; unordered_map<int, int> st[n + 1];
            rep (i, 1, n) {
                cin >> a[i]; a[i] += a[i - 1]; st[i][a[i]] = i - 1;
                rep (j, 1, i - 1) if (st[j].count(a[i] - a[j])) st[i][a[i] - a[j]] = st[j][a[i] - a[j]] + i - j - 1;
            }
            int ans = n - 1;
            for (auto &i : st[n]) umin(ans, i.se);
            cout << ans << '
    ';
        }
        return 0;
    }
    

    E1&E2 - Close Tuples

    组合数学

    这里只放E2的代码了, E1无非是m,k给定, 不取膜(C用平常约分的方式计算)

    int C(int n, int m) {
        if (n < m) return 0;
        return fac[n] * facinv[m] % mod * facinv[n - m] % mod;
    }
     
    int main() {
        IOS; inv[0] = inv[1] = fac[0] = facinv[0] = 1;
        rep (i, 2, 2e5) inv[i] = (mod - mod / i) * inv[mod % i] % mod;
        rep (i, 1, 2e5) fac[i] = fac[i - 1] * i % mod, facinv[i] = facinv[i - 1] * inv[i] % mod; 
        for (cin >> _; _; --_) {
            cin >> n >> m >> k;
            rep (i, 1, n) cin >> a[i];
            sort(a + 1, a + 1 + n);
            ll ans = 0;
            for (int i = 1, j = 1; i <= n; ++i) {
                while(a[i] - a[j] > k) ++j;
                ans = (ans + C(i - j, m - 1)) % mod;
            }  
            cout << ans << '
    ';
        }
        return 0;
    }
    

    F - The Treasure of The Segments

    无非就是不相交, 右节点再当前段左节点左边, 左节点再当前段右节点右边 一定不相交

    二分找一下就行, 正难则反

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; VI l(n), r(n);
            rep (i, 1, n) cin >> a[i].fi >> a[i].se, l.pb(a[i].fi), r.pb(a[i].se);
            sort(all(l)); sort(all(r)); 
            int ans = n - 1;
            rep (i, 1, n) umin(ans, lower_bound(all(r), a[i].fi) - r.begin() + n - (upper_bound(all(l), a[i].se) - l.begin()));
            cout << ans << '
    ';
        }
        return 0;
    }
    
  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/14143286.html
Copyright © 2011-2022 走看看