问题描述
蒜头君设计了一个任务系统。这个系统是为了定时提醒蒜头君去完成一些事情。系统大致如下,初始的时候,蒜头君可能会注册很多任务,每一个任务的注册如下:
Register Q_Period表示从系统启动开始,每过 Period 秒提醒蒜头君完成编号为 Q_
num的任务。
你能计算出蒜头君最先被提醒的k个任务吗?
输入格式
第一行输入 n(0
————————————————
#include <bits/stdc++.h>
using namespace std;
map<int,int> timed;
int main()
{
priority_queue <pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > a;
int n,k;
cin>>n>>k;
while(n--)
{
string z;
int x,y;
cin>>z>>y>>x;
timed[y]=x;
pair<int,int>b(x,y);
a.push(b);
}
while(k--)
{
pair<int,int>b;
cout<<a.top().second<<endl;
b=a.top();
a.pop();
pair<int,int>p(b.first+timed[b.second],b.second);
a.push(p);
}
return 0;
}
28行代码;
实际上是对优先队列的理解要深入,对元组的把我要好则行;
事实上此处我并没有做好,仅仅是投机取巧
看看https://blog.csdn.net/Liukairui/article/details/79329145这位博主写的
运算符重载;