CF 189 div2 D
2013-06-24 14:57
381 查看
D. Psychos in a Line
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
There are n psychos standing in a line. Each psycho is assigned a unique integer from
1 to n. At each step every psycho who has an id greater than the psycho to his right (if exists) kills his right neighbor in the line. Note that a psycho might kill and get killed at the same
step.
You're given the initial arrangement of the psychos in the line. Calculate how many steps are needed to the moment of time such, that nobody kills his neighbor after that moment. Look notes to understand the statement more precise.
Input
The first line of input contains integer n denoting the number of psychos,
(1 ≤ n ≤ 105). In the second line there will be a list of
n space separated distinct integers each in range
1 to n, inclusive — ids of the psychos in the line from left to right.
Output
Print the number of steps, so that the line remains the same afterward.
Sample test(s)
Input
Output
Input
Output
Note
In the first sample line of the psychos transforms as follows: [10 9 7 8 6 5 3 4 2 1]
→ [10 8 4]
→ [10]. So, there are two steps.
这道题突破点在,能够删除后面元素的数字,一定是开始时比后面一个元素大的那些元素,这样我们可以用一个队列保存下模拟过程中比后面一个元素大的那些元素。由于需要删除元素,所以用一个next数组模拟链表,这样就导致一个问题,必须从后面倒着开始删除元素,否则next指向是错误的,让开始时入队的顺序倒着来就可以了。
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
There are n psychos standing in a line. Each psycho is assigned a unique integer from
1 to n. At each step every psycho who has an id greater than the psycho to his right (if exists) kills his right neighbor in the line. Note that a psycho might kill and get killed at the same
step.
You're given the initial arrangement of the psychos in the line. Calculate how many steps are needed to the moment of time such, that nobody kills his neighbor after that moment. Look notes to understand the statement more precise.
Input
The first line of input contains integer n denoting the number of psychos,
(1 ≤ n ≤ 105). In the second line there will be a list of
n space separated distinct integers each in range
1 to n, inclusive — ids of the psychos in the line from left to right.
Output
Print the number of steps, so that the line remains the same afterward.
Sample test(s)
Input
10 10 9 7 8 6 5 3 4 2 1
Output
2
Input
6 1 2 3 4 5 6
Output
0
Note
In the first sample line of the psychos transforms as follows: [10 9 7 8 6 5 3 4 2 1]
→ [10 8 4]
→ [10]. So, there are two steps.
这道题突破点在,能够删除后面元素的数字,一定是开始时比后面一个元素大的那些元素,这样我们可以用一个队列保存下模拟过程中比后面一个元素大的那些元素。由于需要删除元素,所以用一个next数组模拟链表,这样就导致一个问题,必须从后面倒着开始删除元素,否则next指向是错误的,让开始时入队的顺序倒着来就可以了。
#include <iostream> #include <cstdio> #include <cstring> #include <cstdio> #include <cstdlib> #include <map> #include <set> #include <vector> #include <queue> #include <stack> #include <algorithm> #include <list> using namespace std; typedef long long LL; typedef pair<int,int> P; const int maxn = 100000 + 5; const int INF = 1000000000; queue<P> Q; int next[maxn]; int num[maxn]; int main(){ int n; while(cin >> n){ while(!Q.empty()) Q.pop(); for(int i = 0;i < n;i++){ cin >> num[i]; next[i] = i+1; } for(int i = n-2;i >= 0;i--){ if(num[i] > num[i+1]) Q.push(P(i,0)); } int ans = 0; while(!Q.empty()){ int pos = Q.front().first; int round = Q.front().second; ans = max(ans,round); Q.pop(); if(next[pos] != n && num[pos] > num[next[pos]]){ next[pos] = next[next[pos]]; Q.push(P(pos,round+1)); } } cout << ans << endl; } return 0; }
相关文章推荐
- cf 189 div2 A - Magic Numbers
- cf-#189-div 2
- Psychos in a Line(CF #189 Div. 1)
- cf-#189-div 2
- cf 236 div2 E Strictly Positive Matrix 矩阵阶乘和图上路径(计数)(可达)(最优值)问题
- CF 345 div2 A和B
- CF 191 div2
- CF —— Codeforces Round #428 (Div. 2) B. Game of the Rows
- CF - 286 - div2 - C - Mr. Kitayuta, the Treasure Hunter (DP)
- CF 95 div2 B
- CF 245 div2
- CF 188 (div2 C)
- CF#195(div2) A:Vasily the Bear and Triangle
- CF 197 DIV2 Xenia and Bit Operations 线段树
- CF Round #324 (Div2) D. Dima and lisa
- CF div2 332 C
- E. Soldier and Traveling (CF 304 div2) 最大流
- CF-Codeforces Round #420 (Div. 2)-C-Okabe and Boxes
- CF 455 Div. 2 A - E 题解
- [CF]codeforces round#366(div2)滚粗记