P7874 「SWTR-07」My rating is -32

Posted David24

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P7874 「SWTR-07」My rating is -32相关的知识,希望对你有一定的参考价值。

1 P7874 「SWTR-07」My rating is -32

2 题目描述

时间限制 \\(200ms\\) | 空间限制 \\(16MB\\)

\\(1\\sim n\\) 不重不漏地分进 \\(k\\) 个集合 \\(S_1,S_2,\\cdots,S_k\\) 中,满足相邻的数不在同一集合且 \\(|S_i|>0\\) 。求

\\(\\sum_{i=1}^k a[{\\min_{j\\in S_i}j}]\\)

的最大值,其中 \\([]\\) 表示下标。

数据范围:

对于 \\(100\\%\\) 的数据,\\(2 \\leq k \\leq n \\leq 10^4\\)\\(0 \\leq a_i \\leq 10^9\\)\\(T=10\\)

3 题解

考虑贪心。

容易发现,如果没有相邻的条件,答案就是第一个数加上剩下的前 \\(k - 1\\) 大数的和。

这是因为我们可以先将所有的数放到一个集合里,然后将前 \\(k - 1\\) 大的数放到剩余的 \\(k - 1\\) 个集合中,此时由于这些集合都只有一个元素,所以取得的值就是那个元素。

考虑相邻的条件。容易发现此时我们可以将所有的下标按照奇偶分类,分别放入前两个集合中,然后再从这两个集合中取出剩余的前 \\(k- 2\\) 大的数。

所以答案就是前两个数加上剩余数中前 \\(k - 2\\) 的数的和,用优先队列维护即可。

时间复杂度为 \\(O(n\\log_2n)\\),可以通过本题。

4 代码(空格警告):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N = 1e4 + 10;
#define int long long
int read()
{
    int x = 0, f = 1;
    char c = getchar();
    while (c < \'0\' || c > \'9\')
    {
        if (c == \'-\') f = -1;
        c = getchar();
    }
    while (c >= \'0\' && c <= \'9\')
    {
        x = (x << 1) + (x << 3) + (c ^ 48);
        c = getchar();
    }
    return x * f;
}
int T, n, k, ans, cnt;
int a[N];
signed main()
{
    T = read(), T = read();
    while (T--)
    {
        cnt = 0;
        priority_queue<int> q;
        n = read(), k = read();
        for (int i = 1; i <= n; i++) a[i] = read();
        ans = a[1] + a[2];
        for (int i = 3; i <= n; i++) q.push(a[i]);
        k -= 2;
        while (q.size() && cnt < k)
        {
            int x = q.top();
            q.pop();
            ans += x;
            cnt++;
        }
        printf("%lld\\n", ans);
    }
    return 0;
}

欢迎关注

以上是关于P7874 「SWTR-07」My rating is -32的主要内容,如果未能解决你的问题,请参考以下文章

P7875 「SWTR-07」IOI 2077

Vue实现Rate组件(星星评分)

Vue实现Rate组件(星星评分)

jquery 动态生成的input添加change事件

jquery 动态生成的input添加change事件

CANFD 传输速率分析