题面
https://www.luogu.org/problem/P3719
题解
煽情:那年我八年级,是我第一次省选省一。
那时候也许是我初中第二好的时候吧,八年级下期中,第一次进前$200$($117$名),当上全班第一(清楚的记得那一次$yc$大佬是全校第一),也是第一张省选省一,第一张$CCPC$一等奖($45$中唯一的蓝色闪电队),算上我上学期拿的$pj$省一,就是三张省一了,或许现在看来不算什么,但是那的确是我开始尝到$oi$和学习的甜头,那的确是我的初心。还记得,当年$dhd$教,我的物理还没有那么差,期末考了$100$分,然后发到$QQ$空间$fake$,期末考体育时考的立定跳远,虽然最后没考几分,暑假在四中的操场上和$lxm$还有$cyq$鬼混,然后和齐老师上着一对一的语文课,最期盼的还是到北方(四里河再往北,西边,靠近南国花园)的贲老师家上数学,因为我超级喜欢那里,恬静而美好,也是我后来喜欢的$wym$家住的地方,当时好像对$lyy$比较有好感,现在想想应该算不上喜欢吧。
当然第一好的时候肯定是属于$wym$的初三上学期后半段,那个时候真是心无杂念的疯狂学习,最后在学校的考试考了$57$名,如果不算体育,那就是$20$多名了,在及第考了全市$18$名,$45$中第$7$,在我前面的有$gyf$,$why$,$gy$,$sr$,$zlt$,$xjk$,现在他们都上了一中竞赛班和小$168$诺班,正是那个时候的坚持,才让我这个普通班的弱者有底气和这些重点班的人拼一把,所以我要感谢她呢。可惜我最后失败了。我是个失败者。
我记得我当时最成功的好像是把第二题的二分答案写出来了。然后得了$75pts$,压线拿了省一,同队的$lyh$妈妈还夸我巨呢。可是现在他也不在了。。。。
我当时知道这道题是栈,但是还是不敢写,好像没得多少分。
省选之前重新写了一下,写和调试用了$40$分钟,应该还是我对单调栈不太熟练吧(还有单调队列)
#include<cstdio> #include<iostream> #include<cstring> #define N 100050 #define ri register int using namespace std; int y0[N],n; char s[N],s0[N]; // ( 0 // | 1 // ) 2 int main(){ scanf("%s",s+1); s[0]='('; n=strlen(s+1); s[n+1]=')'; int yy=0,ss=0; for (ri i=0;i<=n+1;i++) { if (s[i]=='(') { yy++; s0[++ss]='('; } else if (s[i]=='a') { y0[yy]++; } else if (s[i]=='|') { yy++; s0[++ss]='|'; } else if (s[i]==')') { while (s0[ss]!='(') { yy--; ss--; y0[yy]=max(y0[yy],y0[yy+1]); y0[yy+1]=0; } yy--; ss--; y0[yy]=y0[yy]+y0[yy+1]; y0[yy+1]=0; } } cout<<y0[0]<<endl; }