HDU5181 numbers,Zory的N0IP模拟赛,栈与卡特兰数的思考

正题

      没有Portal

      因为我自己也没有做掉这题,因为我还想再想想。

      我是这样想的,考虑一个栈没有限制的时候的出栈顺序,有:

       f[n]=\sum_{i=1}^n f[i-1]*f[n-1-i]

      我们令第i个元素最后出栈,前i-1个元素先出栈,再让后n-1-i个元素出栈。

      显然i最后出栈前面两部分不能调换。

      转化为更通俗易懂的形式:F[l][r]=\sum_{i=l}^r F[l][i-1]*F[i+1][r]

      接下来,我们考虑给出的(x,y)要求x在y之前出栈,显然只对l<=min(x,y),max(x,y)<=r的区间造成影响。

      若x<y,那么说明转移的k\not = x,因为这样的话x就最后出来了,否则其他情况x都比y先出来。

      若y<x,那么说明转移的k\not \in (y,x],取这个区间会导致y在x前面出来。

      我们对于每一个k开一个二维数组来存储是否可以用k来转移。

      一开始肯定可以,对于一个操作,向上面分类讨论那样,对于l<=min(x,y),max(x,y)<=r的区间打标记就可以了。

      相当于一个矩阵标记,差分最后前缀和即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值