hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression)
来源:互联网 发布:网络流行语2016我好饿 编辑:程序博客网 时间:2024/06/10 18:03
partial sort.
first use std::nth_element to find pivot,
then use std::stable_partition with the pivot to partition the largest k, whose indices are in acsending order, print them in reverse order.
p.s. lambda expression is also used.
STL is powerful.
#include <cstdio>#include <vector>#include <algorithm>struct IRPair{ int ind; double rate;};int main() { //freopen("input.txt","r",stdin); int num_people, num_candidate, num_final, i,j; double tmp; std::vector<IRPair> vec; std::vector<double> ratings; while(scanf("%d%d%d",&num_people,&num_candidate,&num_final)!=EOF) { vec.resize(num_candidate); ratings.clear(); ratings.resize(num_candidate); for(i=0;i<num_people;++i) for(j=0;j<num_candidate;++j) { scanf("%lf",&tmp); ratings[j]+=tmp; } for(i=0;i<num_candidate;++i) { vec[i].ind=i+1; vec[i].rate=ratings[i]; } std::nth_element(&ratings[0],&ratings[num_candidate-num_final],&ratings[num_candidate]); tmp=ratings[num_candidate-num_final]; std::stable_partition(&vec[0],&vec[num_candidate],[tmp](const IRPair &x) { return x.rate>=tmp; }); for(i=num_final-1;i>0;--i) { printf("%d ",vec[i].ind);} printf("%d\n",vec[0].ind); } return 0;}
156 ms for double, vector
140 ms for float, vector
140 ms for double, array
124 ms for float, arry
time for array / time for vector = 90%
0 0
- hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression)
- 理解你的排序操作(stable_sort,sort,partial_sort,nth_element,stable_partition,partition)
- partition,stable_partition,sort,stable_sort
- Lambda Expression
- stable_partition
- stable_partition
- stable_partition
- hdu Problem-1004(map+sort)
- lambda sort
- NYOJ927The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- NOOJ927The partial sum problem
- The partial sum problem
- The partial sum problem
- The partial sum problem
- Linux网络编程——I/O复用之select详解
- 这些有预谋的攻击你如何防
- A. Vitaly and Strings
- 安卓学习:跑马灯遇到的问题
- 关于U3D贴图格式压缩
- hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression)
- 关于jQuery用bind动态绑定事件无效的处理
- 淘宝app搜索排名优化技巧
- Linux Socket编程(不限Linux)
- 赶紧重回毕设模式
- /proc/meminfo
- 实战 SSH 端口转发
- 如何查看QTP对象的属性列表
- 《贝赛尔曲线》方法实现平滑曲线