zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 76 D

    这次的ABC三道题非常水,但是我就卡在这个D题上了QAQ

    当时大概猜到了贪心,但是没有思路,后来看了一些题解才明白到底是什么意思

    首先,假设我们已经处理好了前面的monsters,对于第i个monster,肯定要选择一个能力大于它能力的勇者。那么该怎么选呢,显然(用贪心的思想分析,就是勇者如果能打到a而不是b (a > b),勇者的选择就更多了,这个选择包含达到b的选择,所以可以达到全局最优)我们希望这个勇者打败的怪物越多越好,所以我们需要找到一个勇者,他的power > max(monster_power[i] ~ monster_power[i + m]),寻找能使m最大的那个勇者。

    附上代码(tips:这一题用memset会超时,必须手动清空

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int N = 200010;
    int pow[N], a[N];
    int main() {
        int t;
        scanf("%d", &t);
        while (t--) {
            int n, m;
            scanf("%d", &n);
            for (int i = 0; i < n; i++)
                scanf("%d", &a[i]);
            scanf("%d", &m);
            int maxn = 0;
            for (int i = 0; i < m; i++) {
                int p, s;
                scanf("%d %d", &p, &s);
                pow[s] = max(pow[s], p);
                maxn = max(maxn, s);
            }
            for (int i = maxn - 1; i >= 0; i--)
                pow[i] = max(pow[i + 1], pow[i]);
            int monster = 0, ans = 0, len = 1;
            int k = maxn;
            maxn = 0;
            while (monster < n) {
                maxn = max(a[monster], maxn);
                if (pow[len] >= maxn) {
                    len++;
                    monster++;
                }
                else if (len == 1) {
                    ans = -2;
                    break;
                }
                else {
                    ans++;
                    maxn = a[monster];
                    len = 1;
                }
            }
            printf("%d
    ", ans + 1);
            for (int i = 0; i <= k; i++)
                pow[i] = 0;
        }
        return 0;
    }
    // 
  • 相关阅读:
    C语言寒假大作战01
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I作业07:第十二周作业
    团队作业6--复审与事后分析
    Alpha阶段项目复审
    事后诸葛亮
    团队作业5——测试与发布(Alpha版本)
  • 原文地址:https://www.cnblogs.com/cminus/p/11877604.html
Copyright © 2011-2022 走看看