1 条题解
-
0
前言
思路
题一定能读懂吧,多步分析一下思路。
第一步分析:
显而易见,当-或+时,是一定不行的。第二步分析:
而最不好处理的是+和-混在了一起,那么可以考虑分组处理。第三步分析:
一个组中,由于都是一种,所以可以排序处理组内。第四步分析:
现在考虑衔接,衔接可以直接接上,因为端点一定为最大或最小,一定符合条件。之后,看代码。
::::info[代码]
#include<iostream> using namespace std; int n,pa,pb; char c; int a[300005],b[300005]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>c; if(i==1&&c=='-'||i==n&&c=='+'){ cout<<"NO"; return 0; } if(c=='-') a[++pa]=i; if(c=='+') b[++pb]=i; } cout<<"YES\n"; for(int i=1;i<=pb;i++){ cout<<b[i]-1<<' '; } for(int i=pa;i>=1;i--){ cout<<a[i]-1<<' '; } return 0; }::::
- 1
信息
- ID
- 12687
- 时间
- 1000ms
- 内存
- 1124MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者