#include <vector>
#include <map>
#include<algorithm>
#include<cmath>
#include<set>
#include<cstdio>
#include <sstream>
#include <string>
#include<iostream>
#include<iomanip>
#include<stack>
#include<utility>
#include<unordered_map>
#include<queue>
#include<cstring>
#include <list>
#include<deque>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
int t;
cin >> t;
while (t-- > 0)
{
int m, n;
cin >> n >> m;
queue<pair<int,int>>q1;
map<int, int>times;
int pri;
for (int i = 1; i <= n; ++i)
{
cin >> pri;
q1.push(make_pair(pri,i));
++times[pri];
}
int cnt = 1;
while (q1.size() > 0)
{
pair<int, int>cur = q1.front();
int islarge = 0;
for (auto elem : times)
{
if (elem.first > cur.first && elem.second > 0)
{
islarge = 1;
break;
}
}
if (islarge == 1)
q1.push(cur);
else {
times[cur.first]--;
if (cur.second == m + 1)
break;
++cnt;
}
q1.pop();
}
printf("%d\n", cnt);
}
}
紫书UVa12100
最新推荐文章于 2021-03-04 14:56:10 发布
本文介绍了一种利用队列和map数据结构实现的优先级任务调度算法,通过对比和优化处理过程,展示了如何在C++中高效解决具有优先级的事件处理问题。核心部分涉及队列操作和时间复杂度分析,适用于实时系统和任务调度场景。
摘要由CSDN通过智能技术生成