事实上不用维护第二个栈只需要在每次弹递增栈时记录一个数组posjposj表示从jj开始到左侧第一比他大的元素中 权值最小的元素位置,没一段posjposj都控制一段区域,可以在弹栈中维护。 思路积累: 1.对于区间具有单调性的问题可以考虑单调栈 2.单减的栈保证栈中每个元素到栈首的值都小于等于该元素 单增保证每个...
}voidmerge(inta,intb) {intr1=find(a);intr2=find(b); fa[r1]=r2; find(top[r2]); num[r1]=num[top[r2]]+1; top[r2]=top[r1]; }intmain() { scanf("%d",&m);intx,y;for(inti=1;i<=30000;i++) fa[i]=top[i]=i;for(inti=1;i<=m;i++) { cin>>s;if(s=='M') { ...