POJ 1068 http://poj.org/problem?id=1068
题目大意:
题目主要看懂两个序列的意义
P序列是指一个右括号的左边有p个左括号
W序列是指与一个右括号相匹配的最近的左括号的序列(每次从1开始计数)
思路:
模拟。
AC代码:
#include<iostream>
#include<cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1e6 + 10;
int n;
int m;
int a[105];
int res[105];
int ans[105];
int main() {
while(cin >> n) {
while(n--) {
memset(a, 0, sizeof a);
memset(res, 0, sizeof res);
memset(ans, 0, sizeof ans);
cin >> m;
for(int i = 1;i <= m; i++) {
cin >> a[i];
}
res[0] = a[1];
for(int i = 1;i < m; i++) {
res[i] = a[i + 1] - a[i];
}
int j;
for(int i = 1 ;i <=m; i++) {
for(j = i - 1; j >= 0; j--) {
if(res[j] > 0) {
res[j]--;
break;
}
}
ans[i] = i - j;
}
for(int i = 1;i <= m; i++) {
cout << ans[i] <<" ";
}cout << endl;
}
}
return 0;
}