Educational Codeforces Round 92 (Rated for Div. 2)

B读错题了, 一直wa,心态炸了, 直接不打了, 分掉惨了

B是可以反复横条的, 还以为是每个位置只能向左走一次, 这读题水平阿!

A

#include <bits/stdc++.h>
#define all(n) (n).begin(), (n).end()
#define se second
#define fi first
#define pb push_back
#define mp make_pair
#define sqr(n) (n)*(n)
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define IO ios::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e5 + 5;
 
int n, m, _, k;
 
int main() {
    IO;
    for (cin >> _; _; --_) {
        int l, r; cin >> l >> r;
        int a = l, b = r / 2;
        if (a > b || 2 * a > r) cout << -1 << ' ' << -1 << '\n';
        else cout << a << ' ' << 2 * a << '\n'; 
    }
    return 0;
}

B

记忆化搜索

#include <bits/stdc++.h>
#define all(n) (n).begin(), (n).end()
#define se second
#define fi first
#define pb push_back
#define mp make_pair
#define sqr(n) (n)*(n)
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define IO ios::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e5 + 5;
 
int n, m, _, k, z;
int a[N], f[N][6];
 
int dfs(int w, int c) {
    if (c < 0 || w + (z - c) * 2 - 1 > k || w > n) return 0;
    if (f[w][c]) return f[w][c];
 
    if (c == 0 || w == 1) return f[w][c] = a[w] + dfs(w + 1, c);
 
    if (w + (z - c) * 2 + 1 <= k)
        return f[w][c] = a[w] + max(dfs(w + 1, c), a[w - 1] + dfs(w, c - 1));
    else if (w + (z - c) * 2 <= k)
        return f[w][c] = a[w] + max(a[w - 1], a[w + 1]);
    else return f[w][c] = a[w];
}
 
int main() {
    IO;
    for (cin >> _; _; --_) {
        cin >> n >> k >> z;
        rep(i, 1, n) memset(f[i], 0, sizeof f[i]);
 
        rep(i, 1, n) cin >> a[i];
 
        cout << dfs(1, z) << '\n';
    }
    return 0;
}

C

#include <bits/stdc++.h>
#define all(n) (n).begin(), (n).end()
#define se second
#define fi first
#define pb push_back
#define mp make_pair
#define sqr(n) (n)*(n)
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define IO ios::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e5 + 5;
 
int n, m, _, k;
int a[10][10], b[100], c[10];
 
int main() {
    IO;
    for (cin >> _; _; --_) {
        string s; cin >> s;
        memset(b, 0, sizeof b);
        memset(a, 0, sizeof a);
        memset(c, 0, sizeof c);
 
        rep (i, 0, s.size() - 1) { 
            int ch = s[i] - '0';
            ++c[ch];
 
            rep (j, 0, 9) 
                if (a[j][ch] && j != ch) ++b[j * 10 + ch], a[j][ch] = 0;
 
            rep (j, 0, 9) 
                if (j != ch) a[ch][j] = 1;
        }
 
        sort(b, b + 100);
        sort(c, c + 10);
 
        cout << s.size() - max(2 * b[99], c[9]) << '\n';
    }
    return 0;
}
posted @ 2020-07-31 00:39  洛绫璃  阅读(102)  评论(0编辑  收藏  举报