题目地址
http://acm.hust.edu.cn/thx/problem.php?id=1425
题目描述:给定m个圆,n个点,求对于每个点,有多少圆包含了它(边界上不算)ans[i]
对于任何一个点i,ans[i]保证<=100
分析:核心思想是扫描线,对每个圆,拆分成两个点,左边点+和右边点-
当一条扫描线经过时,如果遇到+,那么加入该点,如果遇到-点,删除该点
复杂度分析,如果没有最后一句话,这个题的复杂度是不能保证的,但是由于<=100的限制,也就是说
在扫描线滑动的任何一个时刻,对于一个询问某点的操作,其代价是不会很大的,
因为里面的存在的事件点不会很多的,当然这也只是从一个整体上的观察,实际上任然无法保证复杂度
但是由于其个数的限制,而使得答案存在且很稀疏,如果有更好的算法欢迎与我讨论
主要过程,得到事件点,然后遍历所有点,吧x坐标<当前点的全都放到或删除在容器中
遍历容器,计数