2020.11.27【NOIP提高B组】模拟总结

停课集训DAY 3
wtcl,这次比赛暴力都可以打挂

三角形(triangle)

考试时推出了正解,然鹅呢,我就是忘了斜率怎么打,就在判重这一方面卡住了,最后一分都没有。

正解

枚举第一个点,剩下的点按照和这个点组成的直线的斜率排序,这样就可以使相同斜率的线段在一起,可以用组合数( C n m \textrm{C}_{n}^{m} Cnm)算出选到两条相同斜率的线段方案数,即不能构成三角形的方案数(即 C n o w 2 \textrm{C}_{now}^{2} Cnow2, n o w now now为连续相同斜率个数),然后统计答案(ans初始化为 a n s = n ( n − 1 ) ( n − 2 ) 6 ans=\frac{n(n-1)(n-2)}{6} ans=6n(n1)(n2),即 C n 2 \textrm{C}_{n}^{2} Cn2 )。注意处理斜率不存在的情况

独立集(bubble)

暴力骗了30分。。。

正解

最长上升子序列,用 O ( n log ⁡ n ) O(n\log n) O(nlogn)的二分法打,对于两个点 i < j i<j i<j a i ≤ a j a_i\leq a_j aiaj i , j i,j i,j可以在同一个独立集,所以最大的独立集应该为a的最长上升子序列长度,如何求一定在序列中的点呢?把 a a a反过来做一次最长下降子序列,两个序列取交集即可.

线段(segment)

考试时暴力打挂,原因:没开long long,加上long long 0 → 50 0 \rightarrow 50 050

正解

线段树板子

Victor爱数字

考试时暴力打挂,原因:还是没开long long,加上long long 16 → 36 16\rightarrow 36 1636

正解

数位DP

posted @ 2020-11-28 07:42  榴恋666  阅读(51)  评论(0编辑  收藏  举报