全部评论
int Count(vector<int> &v) { std::sort(v.begin(),v.end()); int sum = 0; for (int i = 0; i < v.size(); i++) { int num = floor(v[i] / 0.9); sum += upper_bound(v.begin()+i,v.end(),num)-v.begin()-i-1; } return sum; }
我的第三题是动态规划,是不是每个人都不一样
排序,遍历,更好的遍历就是二分查找,不过我从头遍历过了就没管了
c++ 时间限制1000ms,不仅要先排序,对于查找最大的限制边界值,要采用二分查找,nlogn+nlogn。。。不用二分查找是 nlogn+n^2,反正我超时了
楼上正解,先排序,不然超时
排序解决了x > y的条件,然后循环遍历,去判断 y > x * 0.9,找到第一个满足的,内循环就可以直接break了。因为排序后是数组递增的。我一开始没排序直接写超时。
据说四道才给过 凉了
哎,为啥第三题代码几乎一样,就是过不了,还用了二分查找
相关推荐

点赞 评论 收藏
分享

点赞 评论 收藏
分享
点赞 评论 收藏
分享