Educational Codeforces Round 85(Div。2の評価)(A、B、C、D)

A.レベル統計

タイトルリンク

件名

tはテストグループの数、nはゲームのデータグループの数を表し、各テストデータが妥当かどうかを判断します。

アイデア

  • p [i]を満たさなければなりません、c [i]は減少していません。
  • 常に、p [i]> = c [i]。
  • p [i]には、c [i]以上の変更が必要です

コード

//Powered by CK 2020:04:11
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int p[N], c[N], n;
void fun() {
    int flag = 0;
    cin >> n;
    for(int i = 0; i < n; i++) {
        cin >> p[i] >> c[i];
        if(c[i] > p[i]) flag = 1;
    }
    if(flag) {
        cout << "NO" << endl;
        return ;
    }
    for(int i = 1; i < n; i++) {
        if(p[i] < p[i - 1] || c[i] < c[i - 1] || p[i] - p[i - 1] < c[i] - c[i - 1]) {
            cout << "NO" << endl;
            return ;
        }
    }
    cout << "YES" << endl;
    return ;
}
int main() {
    // freopen("in.txt", "r", stdin);
    int t;
    cin >> t;
    while(t--)  fun(); 
    return 0;
}

B.中産階級

タイトルリンク

件名

任意の数を取り、それを均等に分割して\(x \)以上の値満たす最大数を取得できます。

アイデア

レコードは、時間以上読み取ら\(X \)数と数がより大きい\(X \)の差の合計が少ない記録される0の数以下です。これらの数値を最大から最小に並べ替え、次にそれらを1つずつ列挙し、前のレコードの合計を継続的に減算します。合計は0以上で、ans ++は、合計が0未満の場合、出力の回答を直接中断します。

コード

//Powered by CK 2020:04:11
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
ll down[N], n1, n, x, ans;
int main() {
    // freopen("in.txt", "r", stdin);
    ios::sync_with_stdio(false);
    ll t, temp;
    cin >> t;
    while(t--) {
        n1 = ans= 0;
        cin >> n >> x;
        ll sum = 0;
        for(ll i = 0; i < n; i++) {
            cin >> temp;
            temp -= x;
            if(temp >= 0) {
                ans++;
                sum += temp;
            }
            else    down[n1++] = -temp;
        }
        sort(down, down + n1);
        for(ll i = 0; i < n1; i++) {
            sum -= down[i];
            if(sum >= 0)    ans++;
            else    break;
        }
        cout << ans << endl;
    }
    return 0;
}

C.モンスターの輪

タイトルリンク

アイデア

最初にシーケンス全体の[i] -b [(i + n)-1%n]の値を取得し、次に開始点を列挙して最小値を答えとして見つけます

コード

//Powered by CK 2020:04:11
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e6 + 10;
ll a[N], b[N], cost[N];
int n;
int main() {
    // freopen("in.txt", "r", stdin);
    int t;
    scanf("%d", &t);
    while(t--) {
        ll sum = 0;
        scanf("%d", &n);
        for(int i = 0; i < n; i++) {
            scanf("%lld %lld", &a[i], &b[i]);
            if(i)   cost[i] = max((ll)0, a[i] - b[i - 1]), sum += cost[i];
        }
        cost[0] = max((ll)0, a[0] - b[n - 1]);
        sum += cost[0];
        ll ans = sum - cost[0] + a[0];
        for(int i = 0; i < n; i++)
            ans = min(ans, sum - cost[i] + a[i]);
        printf("%lld\n", ans);
    }
    return 0;
}

D.最小オイラーサイクル

アイデア

**完全なグラフ走査の最小の辞書式順序でl〜rの位置を見つけます。最小の辞書式順序は明らかに次のとおりであることがわかります

1 2 1 3 1 4 1 5 ………… 1 (n - 1) 1 n
    2 3 2 4 2 5 ………… 2 (n - 1) 2 n
        ……………………………………………………………………
            …………………………………………………………
                ………………………………………………
                    ……………………………………
                        …………………………
                         (n - 1) n
                                 1**

**合計\(n(n-1)+ 1 \)の数値があり、最後の行は特別で、1つしかありません **
したがって、これらの数値をループで列挙するだけで、最後の数値が特別に判断されます。

コード

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, l, r;
int main() {
    // freopen("in.txt", "r", stdin);
    int t;
    cin >> t;
    while(t--) {
        scanf("%lld %lld %lld", &n, &l, &r);
        ll sum = 1;
        for(ll i = 1; i <= n; i++) {
            // cout << i << endl;
            if(sum + (n - i) * 2 <= l) {
                sum += (n - i) * 2;
                continue;
            }
            for(ll j = i + 1; j <= n; j++) {
                if(sum >= l && sum <= r)
                    printf("%lld ", i);
                sum++;
                if(sum >= l && sum <= r)
                    printf("%lld ", j);
                sum++;
                if(sum > r) break;
            }
            if(sum > r) break;
        }
        if(sum <= r)    printf("1 ");
        printf("\n");
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/lifehappy/p/12678809.html