【3】Codeforces Global Round 9. C. Element Extermination
程序员文章站
2022-03-11 08:25:04
题目http://codeforces.com/contest/1375/problem/C思路由于满足aia2a_1 > a_2a1&...
题目
http://codeforces.com/contest/1375/problem/C
思路
由于满足的序列才能被消除,所以我们尽可能让前面的数字更小。
从左往右依次考虑每一个数字。
假如,则保留,于是变成和的比较,和与的比较同理。
假如,则一直往后,找到第一个满足的数。由于之间的数都比要小(因为且是第一个比大的),则从开始从右往前比较,并且总是保留,最后就变成和的比较。由于已经知道,所以保留,变成与的比较,和与的比较同理。假如没有找到满足要求的,即大于它之后的所有数,则最后无法消除。
所以我们要么
- 直到最后一个元素发现,也找不到。于是答案NO。
- 找到满足条件的,把到的元素全部消除。消除到最后,变成和的比较。所以我们发现,只要最后一个数大于,则我们总可以消除到只有一个元素。
解法:
只需要比较和的大小。如果,则NO,否则YES。
note: 这里把数组画在坐标系上会更容易理解。
代码
代码均为提交通过版本。为保持比赛时原样,没有后期优化或者修改。但为方便阅读,可能会增加注释。
#include <iostream>
using namespace std;
int main() {
int tcase;
std::ios::sync_with_stdio(false);
cin >> tcase;
while(tcase--) {
int n;
cin >> n;
int first, last;
for(int i = 0; i < n; i++) {
int x;
cin >> x;
if (i == 0) {
first = x;
} else if (i == n - 1) {
last = x;
}
}
if (first < last) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
本文地址:https://blog.csdn.net/rbb317/article/details/107138373
下一篇: Masonry的实现原理