thairs专题

PKU3378 Crazy Thairs - 动态规划+树状数组

题目描述: 给定一个长度为N的数字序列{ai},问总共有多少个长度为5的上升子序列。(ai<10^9,N<=50000) 分析: 由于数字范围很大,首先将数字离散化为1~N之间的整数。原a[]数组转换为d[]数组,其中d[i]=j表示a[i]是a[]数组中第j小的数。 可以用动态规划来描述这个算法: p从0到N,令i=d[p]。f[i][k]表示以数字i为结尾,长度为k的上升序列的个数。

[PKU 3378]Crazy Thairs(平衡树)

【题目大意】: N个数(N<=50000),求5个互相不逆序的数的组合有多少个。 【题目分析】: 这个题的重要的地方在于要统计的是长度为5的正序序列的个数,我们就可以通过正序对个数的求法来类比出来正确的方法。 正序的求法我们是在平衡树中记录size,通过rank操作来进行的。其实进行一下扩展就可以得到正确的方法。我们开4个平衡树,然后rank的含义也随之改变,第一个求的就是以当前节点为尾的