筛除专题

数三角形(二)》-筛除法斜线结论

算法思路: 1、一个直观的思路是筛除法,即:答案=总数-三点共线的种数 总数易求得,为组合数C((n+1)*(m+1),3),考虑到n、m数值范围,考虑用long long。 2、三点共线的情况有: (1)网格顶点同行,每行有m+1个顶点,共n+1行,共有:C(m+1,3) * (n+1) (2)网格顶点同列,每列有n+1个顶点,共m+1列,共有:C(n+1,3) * (m+1) (3)网格顶

从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小

问题:从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。 解法:这是双端 LIS 问题,用 DP 的思想可解,目标规划函数 max{ b[i] + c[i] }, 其中 b[i] 为从左到右, 0 ~ i 个数之间满足递增的数字个数; c[i] 为从右到左, n-1 ~ i 个数之间满足递增的数字个数。最后结果为 n - max + 1。其中 DP 的时候,可以维护