AtCoder Beginner Contest 194 Editorial

A - I Scream

根据 奶脂率 和 乳脂率 判断是何种冰淇淋

int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    int a, b;
    cin >> a >> b;
    a = a + b;
    if (a >= 15 && b >= 8) cout << 1;
    else if (a >= 10 && b >= 3)
        cout << 2;
    else if (a >= 3)
        cout << 3;
    else
        cout << 4;
    return 0;
}

B - Job Assignment

分开存储,循环判断。如果是同一个人完成任务则总时间累计

int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    vector<int> a, b;
    int n, ans = 1e9 + 5;
    cin >> n;
    a.resize(n);
    b.resize(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i] >> b[i];
    }
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j) {
            if (i == j) ans = min(ans, a[i] + b[j]);
            else
                ans = min(ans, max(a[i], b[j]));
        }
    cout << ans;
    return 0;
}

C - Squared Error

公式推导

i=2nj=1i1(AiAj)2(1)=12(i=1nj=1n(AiAj)2)because (AiAi)2=0(2)=12(i=1nj=1n(Ai2Aj22AiAj))(3)=12(2Ni=1nAi22j=1n(Aij=1nAj))(4)=Ni=1nAi2(i=1nAi2),

注意用 long long ,溢出了WA了我3次....

using ll = long long;
int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    int n;
    cin >> n;
    vector<ll> a(n);
    ll sos = 0, sum = 0;  // sos sum of squares
    for (ll &x : a) cin >> x;
    for (int i = 0; i < n; i++) {
        sos += a[i] * a[i];
        sum += a[i];
    }
    cout << n * sos - sum * sum << endl;
    return 0;
}

D - Journey

按题意来即可,注意输出位数来保持精度

int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    int n;
    cin >> n;
    double cnt = 0.0;
    for (int i = 1; i < n; ++i) {
        cnt += 1.0 * n / (n - i);
    }
    cout << setprecision(20) << cnt << "\n";
    return 0;
}

E - Mex Min

熟悉的定义...

using ll = long long;
ll n, m, a[5000005], s[5000005], mina, temp = 1;
int main() {
    ios_base::sync_with_stdio(false), cin.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        if (i <= m) s[a[i]]++;
    }
    for (int i = 0; i <= n; i++) {
        if (s[i] == 0) {
            mina = i;
            break;
        }
    }
    for (int i = m + 1; i <= n; i++) {
        s[a[temp]]--;
        s[a[temp + m]]++;
        if (a[temp] < mina && s[a[temp]] == 0) {
            // cout<<a[temp];
            mina = min(mina, a[temp]);
        }
        temp++;
    }
    cout << mina;
    return 0;
}

F - Digits Paradise in Hexadecimal

不会,先记录下dalao们的解法

__builtin_popcount() 用于计算一个 32 位无符号整数有多少个位为1

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
using ll = long long;
constexpr int MOD = 1e9 + 7;
long long dp[2][17];
string s;
int n, k, m, a, e;
int main() {
    cin >> s >> k;
    for (char c : s) {
        a = '0' <= c && c <= '9' ? c - '0' : c - 'A' + 10;
        rep(i, 16) dp[e][i + 1] =
            (dp[e ^ 1][i] * (16 - i) + dp[e ^ 1][i + 1] * (i + 1)) % MOD;
        dp[e][1] += m ? 15 : a - 1;
        if (m) {
            int t = __builtin_popcount(m), b1 = t - __builtin_popcount(m >> a);
            dp[e][t + 1] += a - b1;
            dp[e][t] += b1;
        }
        m |= 1 << a;
        e ^= 1;
    }
    dp[e ^ 1][__builtin_popcount(m)] += 1;
    cout << dp[e ^ 1][k] % MOD << endl;
}
posted @   RioTian  阅读(102)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
历史上的今天:
2020-03-11 PTA | 1029 旧键盘 (20分)
2020-03-11 关于竞赛大佬常用的 static const auto _ = []() 用法解析
2020-03-11 LeetCode | 1013. 将数组分成和相等的三个部分
点击右上角即可分享
微信分享提示

📖目录