题目链接
题目类型:简单容斥 + 双指针
题目来源:BestCoder #17
题目分析
题目大意
给出$n$个班级以及小明的智商$k$,小明想要找两个队友,但是这两个队友的智商之和必须要大于小明的智商,并且要求这两个人不能是同一个班的,问有多少种组合?
解析
简单的容斥问题
想要找非同班的且智商大于$k$的组合,只需要找所有智商组合大于$k$的,再减去同班的智商大于$k$的组合即可。
对于每个班的组合,只需要在班内排序,然后使用双指针找到组合数累计。
对于全部的,只需要把所有智商排序,然后用双指针找到组合数。
代码
1 |
|