*[codility]Number-of-disc-intersections
2013-11-14 19:31
357 查看
http://codility.com/demo/take-sample-test/beta2010/
这题以前做的时候是先排序再二分,现在觉得没有必要。首先圆可以看成线段,把线段的进入作为一个事件,出去作为一个事件。注意根据题意,同样的点,进入要在出去之前。那么O(n)扫一遍就可以得到结果。注意的是A[i]+i可能会超出int。
这题以前做的时候是先排序再二分,现在觉得没有必要。首先圆可以看成线段,把线段的进入作为一个事件,出去作为一个事件。注意根据题意,同样的点,进入要在出去之前。那么O(n)扫一遍就可以得到结果。注意的是A[i]+i可能会超出int。
// you can also use includes, for example: #include <algorithm> int solution(const vector<int> &A) { // write your code in C++98 vector<pair<long long, int> > intervals; for (int i = 0; i < A.size(); i++) { intervals.push_back(make_pair(((long long)i)-A[i], -1)); intervals.push_back(make_pair(((long long)i)+A[i], 1)); } sort(intervals.begin(), intervals.end()); int ans = 0; int height = 0; for (int i = 0; i < intervals.size(); i++) { pair<long long, int> pp = intervals[i]; if (pp.second == -1) { // start point ans += height; height++; if (ans > 10000000) return -1; } else { // end point height--; } } return ans; }
相关文章推荐
- 关于《大数据时代》
- EM算法
- QStackedWidget及QStackedLayout使用方法
- InstallShield脚本编程基本语法
- [css layout][10] three fixed columns
- uva10905同一思路的两种做法,前一种WA,后一种AC
- hdu 1023 Train Problem II 高精训练
- h264 rtp打包
- JPA 对象关系映射之关联关系映射策略
- hdu 1023 Train Problem II 高精训练
- HDU-2521 反素数
- 怎么取消SVN的项目目录
- java xml转json
- 编写重载函数min(),分别计算int、double、float、long类型数组中的最小树
- Win8应用开发之带水印文本框
- FU-A分包方式说明
- 如何让 Qt 的程序使用 Sleep .
- vxWorks下常用的几种延时方法 .
- Runtime exec: 读InputStream & ErrorStream 没反应
- 关于输出用%lf和%f的问题