zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 187 题解

    A - Large Digits

    按要求求出两个数的每位之和,进行比较即可。

    时间复杂度 (mathcal{O}(log(AB)))

    B - Gentle Pairs

    枚举所有点对求斜率。

    时间复杂度 (mathcal{O}(N^2))

    int main() {
        ios_base::sync_with_stdio(false), cin.tie(0);
        int n;
        cin >> n;
        int x[1010], y[1010];
        int cnt = 0;
        for (int i = 0; i < n; ++i) {
            cin >> x[i] >> y[i];
        }
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < n; ++j) {
                if (i != j)
                    if (abs(y[i] - y[j]) <= abs(x[i] - x[j])) cnt++;
            }
        cout << cnt / 2 << "
    ";
        return 0;
    }
    

    C - 1-SAT

    用两个HashSet分别存储不带!和带!的字符串的纯字符部分,求两个HashSet的交集。若有交集,则输出其中任意一个字符串;否则按要求输出satisfiable

    时间复杂度 (mathcal{O}(N))

    int main() {
        ios_base::sync_with_stdio(false), cin.tie(0);
        int n;
        cin >> n;
        string s;
        unordered_set<string> s1, s2;
        for (int i = 0; i < n; ++i) {
            cin >> s;
            if (s[0] == '!') s1.insert(s.substr(1));
            else
                s2.insert(s);
        }
        for (auto x : s1) {
            if (s2.count(x)) {
                cout << x << "
    ";
                return 0;
            }
        }
        cout << "satisfiable
    ";
        return 0;
    }
    

    D - Choose Me

    将所有城镇按照(2A_i+B_i)降序排列,然后贪心选取即可。

    时间复杂度 (mathcal{O}(Nlog N))

    using ll = long long;
    int main() {
        ios_base::sync_with_stdio(false), cin.tie(0);
        int n;
        cin >> n;
        vector<pair<ll, ll>> towns;
        ll sa = 0, sb = 0;  // T,A
        for (int i = 0; i < n; ++i) {
            int a, b;
            cin >> a >> b;
            towns.emplace_back(a, b);
            sa += a;
        }
        sort(towns.begin(), towns.end(), [](pair<ll, ll>& p, pair<ll, ll>& q) {
            return p.first * 2 + p.second > q.first * 2 + q.second;
        });
        for (int i = 0; i < n; ++i) {
            if (sa < sb) {
                cout << i << "
    ";
                return 0;
            }
            sa -= towns[i].first, sb += towns[i].first + towns[i].second;
        }
        cout << n << "
    ";
        return 0;
    }
    

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    viewport的故事(一)
    Laravel项目部署上线(阿里云 Ubuntu 16.04)
    Javascript数组方法总结
    html中编写js的方式
    js验证表单并提交
    html+css+js实现复选框全选与反选
    Cookie记住账号密码
    加密口令
    ASP.NET 在GridView中自动添加序号列
    ASP.NET使用递归遍历TreeView树
  • 原文地址:https://www.cnblogs.com/RioTian/p/14574890.html
Copyright © 2011-2022 走看看