uvalive 3135 Argus
2024-09-06 14:19:44
https://vjudge.net/problem/UVALive-3135
题意:
有一个系统有多个指令,每个指令产生一个编号为qnum的时间,每个指令的触发间隔不相同,现在给出若干个指令,现在的任务是模拟前k个事件。
如果时间在同一时间发生,那么qnum小的先输出。
思路:
很多相同的数值在同一时刻内,数值小的先输出,那么就是求若干个中最小的,那么就可以用优先队列进行维护。
这里,因为时间范围较小,之后每个事件的时间取余,那么符合的就把一个结构体扔进优先队列,这个结构体包括了qnum,period以及time。
我们重载 < 的时候,发生时间相同的话,把qnum小的优先级调高,时间不同的话,时间在前的优先级高。
代码:
#include <string>
#include <iostream>
#include <queue>
using namespace std; struct node
{
int num;
int pe;
int ti; bool operator < (const node& rhs) const
{
if (ti == rhs.ti) return num > rhs.num;
return ti > rhs.ti;
}
} a[]; priority_queue<node> pq; int main()
{
int cnt = ; string b; while (cin >> b)
{
if (b[] == '#') break; cin >> a[cnt].num >> a[cnt].pe; cnt++;
} int k; cin >> k; for (int i = ;i <= ;i++)
{
for (int j = ;j < cnt;j++)
{
if (i % a[j].pe == )
{
node tmp = (node){a[j].num,a[j].pe,i}; pq.push(tmp);
}
}
} for (int i = ;i < k;i++)
{
node tmp = pq.top();pq.pop(); cout << tmp.num << endl;
} return ;
}
最新文章
- Blink, 通向哈里·;波特的魔法世界
- filter-自己的理解
- 006医疗项目-模块一:用户的查找:2.用户表查询的mapper映射的文件
- VS2012与NUnit
- [lua]尝试一种Case语法糖
- HTML5 文件域+FileReader 读取文件(二)
- last与lastlog命令
- 找不到Qt5Cored.dll(Release和Debug版连接了不同的库)
- hdu4185 Oil Skimming(偶匹配)
- 使用Visual C++编程
- .net打印控件基本用法
- Tesseract-ocr 工具使用记录
- Django(其二)
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- JAVA自学笔记04
- 每日踩坑 2019-04-09 Web.config configuration 蓝色波浪线 未声明 configuration 标签的解决办法
- JS基础内容小结(基础)(一)
- js获取日期:昨天今天和明天、后天
- Struts2 (上)
- 对SIP摘要认证方案的理解