C. Lexicographically Largest - 思维

题面

分析

如果没有相同的数那么一定是从最后一个开始向前一个个放入集合,这样不会损失,一旦有相同的,从右向左依次放入,那么一旦遇到集合里已经有的元素,此时最优策略就是将当前这个数减一再放进去,那么此时我可以将他前面的那个数先放进去,然后在放这个数,呢么简单来做也就是将数组按照从大到小排序,如果遇到相邻相同元素,那么就可以将后面这个元素减一,同时需要维护保证数组始终单调递减。

代码
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

void solve() {
    int n;
    cin >> n;
    vector<ll> a(n);
    for(int i = 0; i < n; i ++) {
        cin >> a[i];
        a[i] += i + 1;
    }
    sort(a.begin(), a.end(), greater<ll>());
    for(int i = 1; i < n ;i ++) {
        if(a[i] > a[i - 1]) a[i] = a[i - 1] - 1;
        if(a[i] == a[i - 1]) a[i] --;
    }
    for(int i = 0; i < n; i ++) cout << a[i] << ' ';
    cout << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);


    int T;
    cin >> T;
    while(T --) {
        solve();
    }
}

相关推荐

  1. 数据分析思维

    2024-03-25 02:36:01       49 阅读
  2. C. Lexicographically Largest - 思维

    2024-03-25 02:36:01       22 阅读
  3. 如何培养科学思维

    2024-03-25 02:36:01       20 阅读
  4. 思维】根号分治

    2024-03-25 02:36:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 02:36:01       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 02:36:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 02:36:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 02:36:01       18 阅读

热门阅读

  1. 2024最新华为OD机试试题库全 -【加密算法】- C卷

    2024-03-25 02:36:01       17 阅读
  2. 深度学习如何入门?(人工智能)

    2024-03-25 02:36:01       21 阅读
  3. SpringMVC

    2024-03-25 02:36:01       23 阅读
  4. MySQL锁

    2024-03-25 02:36:01       17 阅读
  5. DFS进阶——混境之地5

    2024-03-25 02:36:01       16 阅读
  6. 【字节序】

    2024-03-25 02:36:01       17 阅读
  7. 优化大型语言模型表现的策略与方法

    2024-03-25 02:36:01       20 阅读