POJ 2388 解题报告

来源:互联网 发布:淘宝开店流程ppt 编辑:程序博客网 时间:2024/06/05 17:21

果然很水,抛去输入和输出,程序就一行代码

std::nth_element(nums.begin(), nums.begin() + nums.size() / 2, nums.end());

这道题是求median,可以想到quick_select的方法,时间复杂度为平均情况下O(n)。核心就是用的是递归地partition。大神们还是0MS过了。

Accepted284K63MSC++623B

/* ID: thestor1 LANG: C++ TASK: poj2388 */#include <iostream>#include <fstream>#include <cmath>#include <cstdio>#include <cstring>#include <limits>#include <string>#include <vector>#include <list>#include <set>#include <map>#include <queue>#include <stack>#include <algorithm>#include <cassert>using namespace std;int main(){int N;cin >> N;std::vector<int> nums(N);for (int i = 0; i < N; ++i){cin >> nums[i];}std::nth_element(nums.begin(), nums.begin() + nums.size() / 2, nums.end());    std::cout << nums[nums.size()/2] << endl;return 0;  }


0 0
原创粉丝点击