0828-T1 移除数
0828-T1 移除数
题意
给出一个序列 \(a\),求在 \(a\) 中删除一种数后得到的序列中,字典序最小的序列。
思路
贪心。
选择第一个 \(i\) 满足 \(a_i>a_{i+1}\),删除 \(a_i\) 后,得到的序列字典序最小。
若 \(a_i \le a_{i+1}\),删除 \(a_i\) 后字典序不会变小。
若 \(a_i > a_{i+1}\),\(i\) 不是第一个,删除 \(a_i\) 后得到的序列字典序一定没有删除第一个小。
若序列递增删除最后一项即可。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n, a[N], num;
int main() {
cin >> n;
for (int i = 1; i <= n; i ++) cin >> a[i];
for (int i = 1; i <= n; i ++)
if (a[i] > a[i + 1]) {
num = a[i];
break;
}
for (int i = 1; i <= n; i ++) {
if (a[i] == num) continue;
cout << a[i] << " ";
}
return 0;
}
本文来自博客园,作者:maniubi,转载请注明原文链接:https://www.cnblogs.com/maniubi/p/18386449,orz

浙公网安备 33010602011771号