2 条题解
-
1
debug了半小时,结果发现......
想引用一下
曾经最近没开时写的:不过数据范围我数组开到评测只因你告诉我
Standard answer longer than user output.
...得了正题。
用个动态数组,是局部的,每次存删除后的水果序列,再赋值给最终的。
code:
#include <bits/stdc++.h> using namespace std; int n,a[300000],l[300000],r[300000];//报复性开大 vector <int> ve; vector <int> tmp; signed main() { freopen("fruit.in","r",stdin); freopen("fruit.out","w",stdout); scanf("%d",&n); a[0] = a[n + 1] = -1; r[0] = 1; l[n + 1] = n; for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); if(a[i] != a[i - 1]) ve.push_back(i); l[i] = i - 1; r[i] = i + 1; } while(r[0] != n + 1) { tmp.clear(); for(int i = 0;i < ve.size();i++) { printf("%d ",ve[i]); int u = l[ve[i]]; int v = r[ve[i]]; r[u] = v; l[v] = u; if(a[ve[i]] != a[u] && a[ve[i]] == a[v]) tmp.push_back(v); } ve = tmp; printf("\n"); } return 0; }
信息
- ID
- 1478
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 22
- 已通过
- 3
- 上传者