Sorting Railway Cars
题意:大概就是给你一些数字,这些数字都是属于1-n不重复,每次排序,只能把一个数字放在最前面或者是最后面问你最少多少次能把他们排成升序?
思路:就是你要考虑那一些数字不用排序,当然是那种 连续上升的数,必须是相差1的那种上升序列,这种的就不用排了
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll; int b[100001];
int s[1000001];
int main()
{memset(s, 0, sizeof s);int n; cin >> n;for (int i = 1; i <= n; i++)cin >> b[i];for (int i = 1; i <= n; i++){s[b[i]] = s[b[i] - 1] + 1;}int maxx = 0;for (int i = 1; i <= n; i++)maxx = max(maxx, s[i]);cout << n - maxx << endl;
}
很巧妙啊 用一个数组下标来找他的前一个数!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
