首页 > 其他分享 >The sol to print

The sol to print

时间:2024-11-17 17:21:21浏览次数:1  
标签:node int sol priority maxn print

The sol to print

https://oier.team/problems/93

思路

用两个优先队列。
一个用于存储没有打印任务的打印机,一个存储有任务的打印机。
如果有打印机没有打印任务直接选择里面最小的。
否则,找到等待时间最小的那一个。

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn = 200010;
#define int long long
int n,m;
struct node{int s,t,id;}a[maxn];
bool cmp(node &A,node &B){return A.t<B.t;}
struct print{
    int id,t;
    bool operator < (const print &x)const{
        return t==x.t ? id>x.id : t>x.t;
    }
};    
priority_queue <print> q;
priority_queue <int,vector<int>,greater<int> > v;
priority_queue <int,vector<int>,greater<int> > ans[maxn];
int read(){
    int x=0,f=1;
    char c=getchar_unlocked();
    while(c<'0'||c>'9'){
        if(c=='-') f=-1;
        c=getchar_unlocked();
    }
    while(c>='0'&&c<='9'){
        x=x*10+c-'0';
        c=getchar_unlocked();
    }
    return x*f;
}
signed main(){
    freopen("print.in","r",stdin);
    freopen("print.out","w",stdout);
    int n = read(),m = read();
    for(int i = 1;i <= n;i++) a[i].s = read(),a[i].t = read(),a[i].id=i;
    sort(a+1,a+1+n,cmp);
    for(int i = 1;i <= m;i++) v.push(i);
    for(int i = 1;i <= n;i++){
        while(q.size() && q.top().t <= a[i].t)
             v.push(q.top().id),q.pop();
        if(v.empty()) 
            ans[q.top().id].push(a[i].id),q.push({q.top().id,q.top().t+a[i].s}),q.pop();
        else ans[v.top()].push(a[i].id),q.push({v.top(),a[i].s+a[i].t}),v.pop();
    }
    for(int i = 1;i <= m;i++){
        printf("%d ",ans[i].size());
        for(int j = 0;j < ans[i].size();j++){
            while(!ans[i].empty()){
                printf("%d ",ans[i].top());
                ans[i].pop();
            }      
        }
        printf("\n");
    }
    return 0;
}

标签:node,int,sol,priority,maxn,print
From: https://www.cnblogs.com/yingxilin/p/18550768

相关文章

  • IMPRINT:通过学习身份保持表示进行生成对象合成
    IMPRINT:通过学习身份保持表示进行生成对象合成生成对象合成作为合成图像编辑的一种有前景的新途径出现了。然而,对象身份保存的要求带来了重大挑战,限制了大多数现有方法的实际使用。作为回应,介绍了IMPRINT,这是一种基于扩散的生成模型,采用两阶段学习框架进行训练,将身份保持学习与......
  • The sol to Bismuth / Linear Sieve
    ThesoltoBismuth/LinearSievehttps://www.luogu.com.cn/problem/P11169思路因为懒惰,所以直接转载了当时参考的这篇博客https://www.luogu.com.cn/article/ys9ualoj首先观察样例发现第一个样例一定是\(\lceil\frac{n}{2}\rceil\)。手推一下加入数字的过程:当处理到......
  • Nuxt.js 应用中的 vite:configResolved 事件钩子
    title:Nuxt.js应用中的vite:configResolved事件钩子date:2024/11/17updated:2024/11/17author:cmdragonexcerpt:在Nuxt3中,vite:configResolved钩子允许开发者在Vite配置被解析后访问已解析的配置项。这使得在构建过程中能够根据最终的配置进行动态调整和扩展......
  • Solidity学习笔记-1
    01.HelloWorld开发工具Remix//SPDX-License-Identifier:MIT//软件许可,不写编译会出现警告//版本,“0.8.21”-->不能小于这个版本,"^"-->不能大于0.9.0pragmasolidity^0.8.21;//创建合约contractHelloWorld{stringpublichelloworld="HelloWorld!";}......
  • COMP9021 Solving crosswords
    Assignment2COMP9021,Trimester3,20241Generalmatters1.1AimThepurposeoftheassignmentisto:developyourproblemsolvingskills;designandimplementthesolutionstoproblemsintheformofmediumsizedPythonprograms;practicethedesignand......
  • UEFI 笔记 002 —— PrintLib.h
    https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Library/PrintLib.h//MdePkg\Include\Library\PrintLib.h//--2024-11-16////Thisfunctionissimilarassnprintf_sdefinedinC11.UnicodeSPrint(OUTCHAR16*,INUINTN,INconstCHAR16*......
  • CSS(7):定位position:相对定位(relative)、绝对定位(absolute)、固定定位(fixed)和静态定位(st
    一.定位:将盒子定在某一个位置,其规则为:定位=定位模式+边偏移 。二:定位模式1.static静态定位:元素无设置的时候就是static        “position:static;”2.relative相对定位:相对于当前位置进行移动,通过设置偏移属性(top、right、bottom、left)来使其在水平和垂直......
  • Solon MVC 的 @Mapping 用法说明
    在SolonMvc里,@Mapping注解一般是配合@Controller和@Remoting,作请求路径映射用的。且,只支持加在public函数或类上。1、注解属性属性说明备注value路径与path互为别名path路径与value互为别名method请求方式限定(def=all)可用@Post、@Get......
  • APM32实现printf串口打印
    Keil环境在Keil环境中使用printf,首先需要打开UseMicroLib,这个库是keil专门为嵌入式设备定制的,比C语言自带的库如stdio、string等占用空间更小,效率更高。首先要点击Keil的魔术棒,如下图把UseMicroLib打上勾,如下图还要包含头文件#include<stdio.h>,在Keil中串口重定向......
  • 解析 React Scheduler 原理,Solid 竟也在使用!
    对于ReactScheduler,它通过将任务切片并异步执行,避免了阻塞浏览器的主线程。很多人其实都看到过类似的文章了,甚至说去手写调度器,都写的很不错,所以本文将从一个新的角度探讨ReactScheduler,揭示它是如何利用几个简单的API实现这一壮举的。ReactScheduler解析首先,让......