说在前面
并没有什么想说的,但是要保持格式=w=
std的题解和代码不一样差评
T1
解法
可以发现,如果信心值已经得出,那么就是一个最长上升子序列问题了(按照财富值排序,做一遍LIS)
那么难点就在于如何求出信心值…
一个人一个人的去计算信心值是很麻烦的,只能从前往后枚举,并没有快速高效的维护方法
然而,假设前i个人都比较到了第i个位置(并且计算出了此时的信心值),那么它们接下来的比较就是一样的了。即,如果第i+1个人的实力值是p,那么前i个人中,所有信心值大于等于p的人都会信心值++
于是可以从前往后,一次计算一个人对一坨人的贡献。当加入第i+1个人时,先处理出它对前面的人的贡献,然后把这个人
加进去。这个步骤显然可以用平衡树进行维护,于是这道题就做完了。
T2
解法
可以简单感受一下,在一个已经被k个n-1维个超直线 切割的 n维超平面上,如果要新增第k+1条超直线,那么新增空间数就是第k+1个超直线被分割的段数。于是定义f[i][j]表示i维空间中,已经被j个i-1维分割,所能得到的最大区域数,f[i][j] = f[i][j-1]+f[i-1][j-1]
比如二维平面的情况,新加入的一维的线,和原来两根一维的线相交,形成了两个零维的点,那么新增的区域就是这两个零维的点分割一维的线 的分割数,显然为3