T1
用了晚测 (8) 把所有的袜子分开计数的思想
那么答案就是 (frac{n}{2n-1})
T2
好题
首先给出 (O(n^2)) 做法
考虑怎么着能转移
定义一个数 (i) 的 (nxt_j) 为 (i o j) 的最小的大于 (i) 的值
对于每个 (i) 考虑所有的 (j<i),更新 (nxj_{j o i},f_i)
这样是 (O(n^2)) 的
或者还可以直接建图跑有向图的 (DP)
那么思考这个问题怎么用更低的复杂度来求解
考试的时候老是以为这题目有单调性可以 (O(n)) 进行总转移
但是发现其实差得有点多,因为单调性其实只是一个普通的性质
考虑一个点 (i) 后面大于 (v_i) 的最小值所在的下标 (r_i) 和在 (j) 前面小于 (v_j) 的最大值下标 (l_j)
可以转移的条件是 (l_jle i<jle r_i)
考试的时候发现了这个性质
那么下面有几种手段来解决这题目
((1) cdq) 分治
在某区间产生了二维偏序条件的某种数的数量
这个问题常常可以 (cdq)
先按照值排一次
然后对于整个 ([l,r]) 区间,先处理左半个区间的值(这里和我写三维偏序板子的cdq不太一样,但是也显然正确)
然后考虑中间的转移
处理出来 (valrankin[l,r]) 的 (x) 的 (l_x,r_x)
注意这里的定义都是下标来的,所以还得排成下标
每次处理出来当前大于 (l_j) 的 (p) 的 (dp) 值 扔到树状数组里面
区间加
复杂度 (O(nlog^2n))
((2)) 线段树
思想类似,具体实现需要 (Segment Tree Beats)
代码只写了 (cdq) 的
和传统的 (cdq) 的题目一样,理解不清楚各种关系是没法写的
反思
以后考试结束之前 (30 min) 想不了正解就先写个稍微高档一点的部分分
省得爆零
这个 (T2) 的偏序关系挺好的,以后见到了也可以往 (cdq) 这方面想想