zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 210

    AtCoder Beginner Contest 210

    A - Cabbages

    int main() {
        IOS;
        ll n, a, x, y, ans = 0;
        cin >> n >> a >> x >> y;
        if (n > a)
            ans = a * x + (n - a) * y;
        else
            ans = n * x;
        cout << ans;
        return 0;
    }
    

    B - Bouzu Mekuri

    int main() {
        IOS;
        cin >> n;
        string s; cin >> s;
        for (int i = 0; i < n; ++i)
            if (s[i] == '1')
                return cout << (i & 1 ? "Aoki" : "Takahashi"), 0;
        return 0;
    }
    

    C - Colorful Candies

    尺取, set维护

    int main() {
        IOS;
        cin >> n >> k;
        VI a(n);
        map<int, int> st;
        for (int i = 0, j = 0; i < n; ++i) {
            cin >> a[i];
            ++st[a[i]];
            if (i - j + 1 > k) {
                --st[a[j]];
                if (!st[a[j]])
                    st.erase(a[j]);
                ++j;
            }
            umax(m, st.size());
        }
        cout << m;
        return 0;
    }
    

    D - National Railway

    枚举终点, 用multiset维护已经枚举过的点(用来当起点)

    int main() {
        IOS;
        ll ans = 2e17;
        cin >> n >> m >> k;
        vector<ll> a(m, 1e15);
        for (int i = 0; i < n; ++i) {
            multiset<ll> x, y;
            for (int j = 0; j < m; ++j) {
                a[j] += k;
                y.insert(a[j] + (ll)j * k);
            }
            for (int j = 0; j < m; ++j) {
                ll cur; cin >> cur;
                if (x.empty())
                    umin(ans, cur + *y.begin() - (ll)j * k);
                else
                    umin(ans, min(*y.begin() - (ll)j * k, *x.begin() - (ll)(m - j) * k) + cur);
                y.erase(y.find(a[j] + (ll)j * k));
                umin(a[j], cur);
                x.insert(a[j] + (ll)(m - j) * k);
            }
        }
        cout << ans;
        return 0;
    }
    

    E - Ring MST

    排序, 把一条边用到极致,

    (0, 1, 2, 3, ...)为根, 找模(a_i)的群即可, 也就是点集

    ({x, (k + a_i) mod c_i, (x + 2 imes a_i) mod c_i, ..., (x + (k - 1) imes a_i) mod c_i})

    其中((x + k imes c_i) mod = x)

    每次将剩下的点, 用边(i)分割成以(0, 1, 2, 3,..) 为首的群, 每个群以(1,2,3,...) 点代表

    一直循环, 直到边用完,

    最后剩下的代表点只剩下一个, 即可成功

    int main() {
        IOS;
        ll n, m, ans = 0;
        cin >> n >> m;
        vector<pair<ll, ll>> p(m);
        for (auto &i : p)
        cin >> i.second >> i.first;
        sort(p.begin(), p.end());
     
        for (auto &i : p) {
            ll tmp = __gcd(n, i.second);
    	ans += (n - tmp) * i.first;
    	n = tmp;
        }
        cout << (n ^ 1 ? -1 : ans);
        return 0;
    }
    
  • 相关阅读:
    Go 笔记之如何防止 goroutine 泄露
    调试 Go 的代码生成
    使用k8s容器钩子触发事件
    springboot教程
    Intellij IDEA 使用Spring-boot-devTools无效解决办法
    c# WMI获取机器硬件信息(硬盘,cpu,内存等)
    各式 Web 前端開發工具整理
    Informix 中执行多条SQL(Execute Script)
    Log4Net
    mysql 按年度、季度、月度、周、日SQL统计查询
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/15025332.html
Copyright © 2011-2022 走看看