作者:手机用户2502927615 | 来源:互联网 | 2023-10-11 19:55
//大顶堆:每个结点的值都大于或等于其左右孩子结点的值
priority_queue x1;
//小顶堆:每个结点的值都小于或等于其左右孩子结点的值
priority_queue,greater> x2;//优先队列(priority queue)
//普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
//在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。
//优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。 代码我只是加了对代码读后的理解
//
// Created by ToroLHZ on 2022/3/20.
//
#include
using namespace std;
typedef long long ll;//大顶堆:每个结点的值都大于或等于其左右孩子结点的值
priority_queue x1;
//小顶堆:每个结点的值都小于或等于其左右孩子结点的值
priority_queue,greater> x2;//优先队列(priority queue)
//普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
//在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。
//优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。const ll N=200005;
ll n,m;typedef pair t;//x:任务结束时间&#xff0c;y任务所需算力priority_queue,greater> q[N];//小根堆ll w[N];ll a,b,c,d;int main() {ll i, j, k;cin>>n>>m;for(i&#61;0;i>w[i];for(i&#61;0;i>a>>b>>c>>d;//第b个计算机有任务//但是任务结束时间比a早while ( q[b].size()&&q[b].top().first<&#61;a ){//恢复算力w[b]&#43;&#61;q[b].top().second;q[b].pop();}//目前算力小于所需算力if(w[b]}
//作者&#xff1a;yxc
//链接&#xff1a;https://www.acwing.com/activity/content/code/content/1230687/
//来源&#xff1a;AcWing