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(n−1)(n−2),即 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 ai≤aj则 i , j i,j i,j可以在同一个独立集,所以最大的独立集应该为a的最长上升子序列长度,如何求一定在序列中的点呢?把 a a a反过来做一次最长下降子序列,两个序列取交集即可.
线段(segment)
考试时暴力打挂,原因:没开long long
,加上long long
后
0
→
50
0 \rightarrow 50
0→50
正解
线段树板子
Victor爱数字
考试时暴力打挂,原因:还是没开long long
,加上long long
后
16
→
36
16\rightarrow 36
16→36
正解
数位DP