#include <iostream> #include <vector> #include <queue> #include <functional> using namespace std; int main(){ // 25个数 ,找前10个最小的数  最优解lg(5)*10 ,没有实现 // 用5个指针 去解 O(10) vector<vector<int>> num{ { 1, 4, 7, 11, 13 }, {2,5,8,12,15}, {3,6,9,13,16}, {1,5,9,14,18}, {3,5,7,9,11} }; int ans[10]; // priority_queue< pair<int,int>, vector<int>, greater<int>> dui;  //最小堆 int i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0; for (int n = 0; n < 10; ++n){ pair<int, int> min(0, num[0][i0]); if (min.second > num[1][i1]){ min.first = 1; min.second = num[1][i1]; } if (min.second > num[2][i2]){ min.first = 2; min.second = num[2][i2]; } if (min.second > num[3][i3]){ min.first = 3; min.second = num[3][i3]; } if (min.second > num[4][i4]){ min.first = 4; min.second = num[4][i4]; } int t = min.first; switch (t){ case 0: ++i0; break; case 1: ++i1; break; case 2: ++i2; break; case 3: ++i3; break; default:++i4; break; } ans[n] = min.second; } return 0; }
点赞 评论

相关推荐

HaxyBT:那我提前下班总可以了吧
点赞 评论 收藏
分享
真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
牛客网
牛客企业服务