zoukankan      html  css  js  c++  java
  • 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳)补题记录

    比赛链接:Here

    很可惜,如果再强一点,就可以拿牌子了。

    5道即可金牌尾 or 银首

    F. Kobolds and Catacombs (思维)

    真不难,只是理解错了题意

    如果原数组 (a) 和 排序后的数组 (b) 在某个位置前缀和相同和可以划分为一组

    const int N = 1e6 + 10;
    ll a[N], b[N];
    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int n; cin >> n;
        for (int i = 1 ; i <= n; ++i) cin >> a[i], b[i] = a[i];
        sort(a + 1, a + 1 + n);
        ll sa = 0, sb = 0, cnt = 0;
        for (int i = 1; i <= n; ++i) {
            sa += a[i], sb += b[i];
            if (sa == sb) cnt ++;
        }
        cout << cnt;
    }
    

    G. The Witchwood (签到)

    递减排序然后累加前 (k) 个即可

    H. The Boomsday Project

    淦,很考验细节处理的单调队列优化DP,当初没学过,不知道怎么处理

    const int N = 5e2 + 10;
    int d[N], k[N], c[N];
    struct Node {int p, q;} node[100005];
    bool cmp(Node a, Node b) {return a.p < b.p;}
    int t[100005 * 3]; //第几次是在第几天
    ll dp[100005 * 3];
    
    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int n, m, r;
        cin >> n >> m >> r;
        for (int i = 1; i <= n; ++i) cin >> d[i] >> k[i] >> c[i];
        int w = 0;
        for (int i = 1; i <= m; ++i) cin >> node[i].p >> node[i].q;
        sort(node + 1, node + 1 + m, cmp);
        for (int i = 1; i <= m; ++i) {
            for (int j = 1; j <= node[i].q; ++j) t[w + j] = node[i].p;
            w += node[i].q;
        }
        t[0] = t[1];
        dp[0] = 0;
        for (int i = 1; i <= w; ++i) dp[i] = dp[i - 1] + r;
        deque<int>q[n + 1];
        for (int i = 1; i <= n; ++i) q[i].push_back(0);
        for (int i = 1; i <= w; ++i) {
            for (int j = 1; j <= n; ++j) {
                while (!q[j].empty() and (t[i] - t[q[j].front() + 1] >= d[j] || i - q[j].front() > k[j]))
                    q[j].pop_front();
                dp[i] = min(dp[i], dp[q[j].front()] + c[j]);
            }
            for (int j = 1; j <= n; ++j) {
                while (!q[j].empty() and dp[i] <= dp[q[j].back()]) q[j].pop_back();
                q[j].push_back(i);
            }
        }
        cout << dp[w] << '
    ';
    }
    

    I. Rise of Shadows

    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        ll h, m, a;
        cin >> h >> m >> a;
        ll d = __gcd(h - 1, m);
        cout << min(d * (2 * (a / d) + 1), h * m);
    }
    

    K . Scholomance Academy

    真 · 阅读理解题

    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        int n; cin >> n;
        int s1 = 0, s2 = 0;
        vector<int>v1, v2;
        for (int i = 1; i <= n; ++i) {
            char c; int x;
            cin >> c >> x;
            if (c == '+') s1++, v1.push_back(x);
            else s2++, v2.push_back(x);
        }
        sort(v1.begin(), v1.end());
        sort(v2.begin(), v2.end());
        double ans = 0;
        for (int i = 0; i < s1; ++i) {
            ans += lower_bound(v2.begin(), v2.end(), v1[i]) - v2.begin();
        }
        ans = ans / s1 / s2;
        cout << fixed << setprecision(10) << ans;
    }
    

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

  • 相关阅读:
    努力学习吧!
    C# 捕捉键盘事件
    oracle 11g 及 plsqldeveloper 相关操作
    Oracle 建表空间
    窗体程序 防止重复打开子窗体
    asp 下 ewebeditor 上传图片功能,在IE7,IE8 及更高版本上失效解决方法
    StringBuilder 在后台动态输出 html 代码
    起动停止 Oracle11g 三个服务的批处理写法
    MySQL 常用命令语句
    虚拟机—pychrm
  • 原文地址:https://www.cnblogs.com/RioTian/p/15111825.html
Copyright © 2011-2022 走看看