Educational Codeforces Round 90 (Rated for Div. 2)

tm小学期和物理实验终于结束了, 这场是现打的, 不行了, 除了A, 都要wa一边, 不是ll就是特判, E的表sb的跑1e18没跑出来

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)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e5 + 5;
 
int n, m, _, k;
 
int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    for (cin >> _; _; --_) {
        int a, b, c; cin >> a >> b >> c;
        if (a >= c) cout << -1 << ' ';
        else cout << 1 << ' ';
 
        if ((ll)a * b > c) cout << b << '\n';
        else cout << -1 << '\n';
    }
    return 0;
}

B

没啥博弈, 就是查能操作几次就行

wa每次反转在没清零

#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)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e5 + 5;
 
int n, m, _, k;
char s[105];
 
int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    for (cin >> _; _; --_) {
        cin >> s + 1;
        int c = 0, a = 0, b = 0;
 
        for (int i = 1; s[i]; ++i) {
            if (s[i] == '0') ++a;
            else ++b;
 
            if (s[i] == s[i + 1]) continue;
 
            if (b >= a) {
                c += a; b -= a; a = 0;
            } else {
                c += b; a -= b; b = 0;
            }
        }
 
        if (c & 1) cout << "DA\n";
        else cout << "NET\n";
    }
    return 0;
}

C

模拟找出等差序列, 最后算上整个长度

wa在爆int

#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)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef double db;
 
const int N = 1e6 + 5;
 
int n, m, _, k;
char s[N];
 
int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    for (cin >> _; _; --_) {
        cin >> s + 1;
        ll c = 0, a = 0, len = 1, w = 0, ans = 0, b = 0;
 
        for (ll& i = len; s[i]; ++i) {
            if (s[i] == '-') ++c;
            else --c;
 
            if (a < c) a = c, ans;
        }
 
        c = 0;
        for (ll i = 1; s[i]; ++i) {
            if (s[i] == '-') ++c;
            else --c;
 
            if (b < c) ans += (a - b + 1) * (i - w), b = c, w = i;
        }
 
        cout << ans + (len - w - 1) << '\n';
    }
    return 0;
}

D

每两个数做差, 求最大和序列

wa在第二次做差是奇偶做差, 存在要补最后一位的情况(忘了)

#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)
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef double db;
 
const int N = 2e5 + 5;
 
int n, m, _, k;
ll a[N], b[N << 1];
 
ll work(ll b[], int n, int k) {
    rep (i, 0, n - 1) {
        a[i] = 0;
        if (i & 1) a[i >> 1] += b[i] * k;
        else a[i >> 1] -= b[i] * k;
    }
 
    n = (n + 1) >> 1; 
 
    ll res = 0, cur = 0, l, r, rl = 0;
    rep (i, 0, n - 1) {
        cur += a[i];
        if (cur > res) {
            r = i; l = rl;
            res = cur;
        }
 
       if (cur < 0) cur = 0, rl = i + 1;
    }
 
    return res;
}
 
int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    for (cin >> _; _; --_) {
        cin >> n;
 
        ll ans = 0;
 
        rep (i, 1, n) {
            cin >> b[i];
            if (i & 1) ans += b[i];
        }
 
        ll a1 = work(b + 1, n, 1); b[n + 1] = 1e9;
        ll a2 = work(b + 2, n - (n & 1), -1);
        cout << ans + max(a1, a2) << '\n';
    }
    return 0;
}

E

0特判, 其他打标到1e9

int main() {  
    //freopen("data.out", "w", stdout); 
    for (int n = 1; n <= 150; ++n) {
        for (int k = 1; k <= 9; ++k) {
            bool flag = 0;
            for (ll j = 0; j <= 1e9; ++j) {
                int c = 0;
                for (int t = 1; t <= k && c <= n; ++t) c += f(j + t);
                if (c == n) { printf("%d, ", j); flag = 1; break;}
            }
            if (flag == 0) printf("-1, ");   
        }
        puts("");
    }
    return 0;
}

只要能跑出来表就过了

posted @ 2020-06-26 10:58  洛绫璃  阅读(143)  评论(0编辑  收藏  举报