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

    比赛链接:https://atcoder.jp/contests/abc168/tasks

    A - ∴ (Therefore)

    题意

    给出一个由数字组成的字符串 $s$,要求如下:

    • 如果 $s$ 以 2,4,5,7,9 结尾,输出 "hon"
    • 如果 $s$ 以 0,1,6,8 结尾,输出 "pon"
    • 如果 $s$ 以 3 结尾,输出 "bon"

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        map<char, string> mp;
        mp['2'] = mp['4'] = mp['5'] = mp['7'] = mp['9'] = "hon";
        mp['0'] = mp['1'] = mp['6'] = mp['8'] = "pon";
        mp['3'] = "bon";
        string s; cin >> s;
        cout << mp[s.back()];
    }

    B - ... (Triple Dots)

    题意

    给出正整数 $n$ 和字符串 $s$,如果字符串的长度大于 $n$,输出字符串的前 $n$ 个字符和 "...",否则输出原字符串。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int n; cin >> n;
        string s; cin >> s;
        cout << s.substr(0, n) << (s.size() > n ? "..." : "");
    }

    C - : (Colon)

    题意

    已知钟表上时针分针的长度,输出某时刻二者末端的距离。

    题解

    余弦定理,全部换算为分钟计算夹角即可。

    Tips

    时针并不总是指向整点,还会随着分针偏移。

    代码

    #include <bits/stdc++.h>
    #define PI acos(-1)
    using namespace std;
    int main() {
        double a, b, h, m; cin >> a >> b >> h >> m;
        double a1 = abs(5.0 * (h + m / 60.0) - m);
        double a2 = 60.0 - a1;
        double a3 = 2.0 * PI * min(a1, a2) / 60.0;
        printf("%.9f", sqrt(a * a + b * b - 2 * a * b * cos(a3)));
    }

    D - .. (Double Dots)

    题意

    给出一个图,在每个端点处树立一个指向牌,使得从每个端点出发沿指向牌走到端点 $1$ 的路程最短。

    题解

    最短路问题,bfs 下就好了。

    Tips

    图中可能有环,所以不能用 dfs 写。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 2e5 + 100;
    vector<int> e[N];
    int fa[N];
    
    void bfs() {
        queue<int> que;
        que.push(1);
        fa[1] = 1;
        while (!que.empty()) {
            int u = que.front();
            que.pop();
            for (auto v : e[u]) {
                if (fa[v] == 0) {
                    que.push(v);
                    fa[v] = u;
                }
            }
        }
    }
    
    int main() {
        int n, m; cin >> n >> m;
        for (int i = 0; i < m; i++) {
            int u, v; cin >> u >> v;
            e[u].push_back(v);
            e[v].push_back(u);
        }
        bfs();
        for (int i = 2; i <= n; i++) {
            if (fa[i] == 0) {
                cout << "No";
                return 0;
            }
        }
        cout << "Yes" << "
    ";
        for (int i = 2; i <= n; i++) {
            cout << fa[i] << "
    ";
        }
    }
  • 相关阅读:
    使用SharePoint PeopleEditor控件
    python快排的三种写法
    js获取浏览器屏幕高度、宽度等
    Spring总结> 第一结 概述
    js设置body高度、宽度为浏览器窗口高度、宽度
    简单的Spring调用jdbc.porperties配置信息,以mysql为例
    SSM(Spring + Spring MVC + MyBatis)整合
    【原创】MS SQL2005 存储过程分页(简洁型)后续完善更新中......
    【转载】动态sql语句基本语法
    Provider模式Demo
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12907101.html
Copyright © 2011-2022 走看看