C2. Pokémon Army (hard version)
发布日期:2021-05-14 16:53:34 浏览次数:12 分类:精选文章

本文共 3115 字,大约阅读时间需要 10 分钟。

���������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������max(a[i] - a[i-1], 0)������������������������������������������������������������������������������������������

���������������������������������������������������������������

  • ������������������������������������������������������������������������������������������������������������������
  • ������������������������������������������������������������������������������������������������������������
  • ���������������������������������������������������������������������������������������������������������������
  • ������������������������������������������������

    int modify(int l, int r) {    // ������l���r���������������    int gain1 = a[l] - a[l-1];    int loss1 = gain1 > 0 ? gain1 : -gain1;    int gain2 = a[r] - a[r-1];    int loss2 = gain2 > 0 ? gain2 : -loss2;    // ���������������������������������    for (int i = l; i <= r; ++i) {        int diff = a[i] - a[i-1];        if (diff > 0) res += diff;    }    // ������������������������    res -= loss1 + loss2;    // ������������������    a[l] = a[l-1];    a[r] = a[r-1];    // ������������������������������������������    for (int i = l; i <= r; ++i) {        int diff = a[i] - a[i-1];        if (diff > 0) res -= diff;    }    // ������������������������������    int gain_new = b[r] - b[r-1];    int loss_new = gain_new > 0 ? gain_new : -loss_new;    int gain_swap = a[r] - a[l-1];    int loss_swap = gain_swap > 0 ? gain_swap : -loss_swap;    // ���������������������������    if (l != r + 1) {        res += loss_new + loss_swap;    } else {        res -= (loss_new + loss_swap);    }    // ������������������������    res += (l != r + 1 ? (gain_new + gain_swap) : 0);        // ������������������������������������������    if (l == r + 1) {        res -= (gain_new + gain_swap);    }    res = max(res, 0);    return res;}

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    上一篇:D. Rescue Nibel!
    下一篇:概率dp 神仙题

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月03日 12时42分47秒