codeforces 1904B

锻炼思维,stl运用等
题目链接

题目大意

给定一个有 n n n个元素的数组 a a a,存在”初始分数“ x x x,当 x > = a [ i ] x>=a[i] x>=a[i]时,分数增加 a [ i ] a[i] a[i]并在数组中删除 a [ i ] a[i] a[i],分别打印出,当数组 a a a中每个元素分别为初始分数时可移除的最大元素数量

思路

最大的元素一定能消除 n − 1 n-1 n1个,因为没有大于最大元素的。
我们不妨求一个 s o r t sort sort之后的前缀和,因为我们最后需要顺序输出,所以先用一个数组 c o p y copy copy一下初始数组
注意,因为前面的元素会对后面的元素造成影响,所以我们从大到小开始处理
因为我们后面要对应输出,所以用个map存答案
从第 n − 1 n-1 n1个开始,如果到该元素的前缀和大于等于 a [ n ] a[n] a[n]那么该元素能消除的数量和下一个元素的数量一样,如果小于,则消除数量为下标数

ACcode

#include<bits/stdc++.h>

using namespace std;

using ll = long long;

const int M = 2e5 + 9;

void solve() {
    int n;cin >> n;
    vector<ll>a(n + 3), b(n + 3), c(n + 3);
    for (int i = 1;i <= n;i++) {
        cin >> a[i];
        c[i] = a[i];//记录
    }
    sort(a.begin() + 1, a.begin() + 1 + n);
    for (int i = 1;i <= n;i++)b[i] = b[i - 1] + a[i];
    map<int, int>mp;
    mp[a[n]] = n - 1;
    for (int i = n - 1;i >= 1;i--) {
        if (b[i] >= a[i + 1])mp[a[i]] = mp[a[i + 1]];
        else mp[a[i]] = i - 1;
    }
    for (int i = 1;i <= n;i++)cout << mp[c[i]] << ' ';
    return;
}

int main() {
    int t;cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

相关推荐

  1. codeforces 1904B

    2023-12-27 08:30:02       43 阅读
  2. Codeforces 1354B

    2023-12-27 08:30:02       8 阅读
  3. codeforces 118 div2(a,b,c)

    2023-12-27 08:30:02       34 阅读
  4. CF1902 B Getting Points 题解

    2023-12-27 08:30:02       47 阅读
  5. Codeforces Round 932 (Div. 2)(A,B,C,D)

    2023-12-27 08:30:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-27 08:30:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-27 08:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-27 08:30:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-27 08:30:02       20 阅读

热门阅读

  1. 单例模式你了解嘛?

    2023-12-27 08:30:02       30 阅读
  2. Mac_通过chmod处理文件权限

    2023-12-27 08:30:02       25 阅读
  3. 处理go中clientv3连接etcd包异常

    2023-12-27 08:30:02       39 阅读
  4. AWS的EC2之间ping不通,服务之间不通,怎么办

    2023-12-27 08:30:02       33 阅读
  5. 2023-全国智能驾驶测试赛-车联网安全专项赛WP (Re)

    2023-12-27 08:30:02       31 阅读
  6. python 读取pdf中的文本

    2023-12-27 08:30:02       26 阅读
  7. gRPC-Go基础(1)protoc的使用

    2023-12-27 08:30:02       40 阅读
  8. TensorFlow是什么

    2023-12-27 08:30:02       32 阅读
  9. LeetCode 26. 删除有序数组中的重复项

    2023-12-27 08:30:02       37 阅读