Uva12100Printer Queue NWERC2008 解题报告

【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略 本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。 阅读详情

题意

学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9件的优先级,优先级越高表示任务越急。
打印机的运作方式如下:首先从打印队列里取出一个J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。
即每次都只打印队列中最大优先级的任务
输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(位置从0开始计数)。输出该任务完成的时刻。所有任务都需要1分钟打印,移动任务不耗费时间。
测试数据:
3    //3个样例
1 0  //任务数 , 所关注任务在队列中的位置
5    //对应每个任务的优先级
4 2
1 2 3
6 0
1 1 9 1 1 1

输出

1
2
5

运行方式例如第二组测试数据

1 2 3 4
2 3 4 1
3 4 1 2
4 2 1 3
打印4
2 1 3
1 3 2
3 2 1
打印3,结束

题解

任务符合先进先出,所以很容易想到用queue类型的数据结构来解决此题。
①首先先抽象出两个关键的要素:位置,优先值
②移动的方式:void move()函数
③判断输出是否符合要求:bool check() (关键)
如何具体实现这三个步骤:
①用struct包装
②先查看队首元素,如果符合要求直接输出,否则将其出队并放到队尾
③在刚开始输入任务对应的优先级时把优先级用一个数组记录下来,并将其按照从大到小排序,设定一个指针ptr总是指着当前队列中最大的优先级。当查看队首元素时,如果优先级符合当前的最大优先级即可进行打印,并且将ptr往后移动(指向下一个最大的优先级),若不符合,则进行move操作。
当且仅当满足check()条件并且满足所关注任务的位置时,操作结束。

具体代码:

#include <set>
#include <numeric>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
#include <map>
#include <functional>

using namespace std;

typedef long long LL;

#define REP(idx1,num1) for(int idx1=0;idx1<(num1);idx1++)
#define pb push_back
#define empb emplace_back
#define mp make_pair
//上面是一些个人习惯
const int maxn = 100+10;
struct node{
    int pos;//位置
    int pt;//优先级
    node(int pos = -1,int pt = -1):pos(pos),pt(pt){}//构造函数
};
bool cmp(int a,int b)
{
    return a>b;
}
queue <node> q;
int str_pt[maxn];//优先级
int t = 0;
int max_pt;//当前最大优先级
int ptr = 0;//str_pt的指针
int sum_j;int you_pos;//任务数,所关注任务的位置


void move()
{
    node tmp = q.front();
    q.pop();
    q.push(tmp);
}
inline bool check()
{
    node tmp = q.front();
    if(tmp.pt == max_pt)//满足当前最大优先级
    {
        q.pop();
        t++;
        ptr++;//移动到下一个最大优先级
        if(tmp.pos == you_pos)//是我所关注的那个任务呢
            return true;
    }
    else
        move();
    return false;
}
void clear(queue<node>& q) //清空队列
{
    queue<node> empty;
    swap(empty, q);
}
int main()
{
    int T;
    cin >> T;
    while(T--){
        t = 0;ptr = 0;
        cin >> sum_j >> you_pos;
        int j = 0;
        REP(i,sum_j){//从 i = 0, i < sum_j; i++
            int pt;
            cin >> pt;
            node n = node(i,pt);
            q.push(n);
            str_pt[j++] = pt;
        }
        sort(str_pt,str_pt+j,cmp);//从大到小排序
        bool flag = false;
        while(!flag){
            max_pt = str_pt[ptr];
            if(check())
                flag = true;
        }
        cout << t << endl;
        clear(q);
    }
    return 0;
}
基于CY7C68013A芯片的USB2.0设计 基于FPGA的USB2.0读写控制项目简介CY7C68013A芯片介绍CY7C68013A芯片读写时序控制CY7C68013A芯片读写代码USB2.0的测试结果结束语 项目简介 我们前面已经写过了USB3.0的FPGA实现,所用到的芯片是FX600Q芯片,这次我们讲解USB2.0的FPGA代码的编写。我们用到的芯片是Cypress厂家的Cy7C68013A,该款芯片在市场上的应用率极广,我们这里不... 阅读详情

相关推荐

prokka-原核及病毒基因组高效便捷注释

文章目录简介安装使用参考 简介 Prokka: rapid prokaryotic genome annotation 全基因组注释是在一组基因组DNA序列中识别感兴趣的特征,并用有用的信息标记它们的过程。Prokka是一款软件工具,可以快速注释细菌、古生菌和病毒基因组,并生成符合标准的输出文件。 安装 conda install -c conda-forge -c bioconda -c defaults prokka Test Type prokka and it should output its

Neptuneyut的博客 3311

打印队列问题

一问题描述 在计算机学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个 1~9的优先级,优先级越高表示任务越急。 打印机的运转方式:首先从打印队列里取出一个任务J,如果队列中有比任务J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。输入打印队列中各个任务的优先级以及你的任务在队列中的位置(队首位置为0),输出该任务完成的时刻。所有任务都需要1分钟打印。例如,打印队列为{1,1,9,..

实践求真知 2741

智能客服系统知识库构建:长尾问题解决方案全解析

智能客服系统知识库构建:长尾问题解决方案全解析

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 4112

【UVA No. 12100】 打印队列 Printer Queue

【UVA No. 12100】 打印队列 Printer Queue

代码改变世界 1243

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 688

读取rosbag中的IMU信息并转为tum格式的csv和txt

rostopic -b xx.bag -p /xx > xxx.txt #for euroc structvio import os, sys,re,csv name="street_07" # basedir="/media/yinjie/2498AF1F98AEEF0C/adataset/15results/imu_bagtxt/"+name+'.txt' # txtdir="/media/yinjie/2498AF1F98AEEF0C//adataset/15results/imu_o

qq_42928559的博客 1919

UVA12100 打印队列 解题报告

维护两个队列,一个普通的queue队列q,用于维护当前的打印机打印队列先后顺序,一个优先队列pq,用于维护当前的打印优先级。每次从q中出队一个文件,然后将其和pq的队首进行比对(也就是当前优先级最高的那个),优先级相同则代表现在要打印的就是这个(题目保证了每个文件的优先级唯一)。详细细节可见代码和注释。所有任务都需要1分钟打印。打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。

qq_45554473的博客 395

U8采购入库单CO接口开发实战:加载、新增与删除操作详解

本文详细解析了用友U8采购入库单CO接口的开发实战,重点介绍了加载、新增与删除三大核心操作的实现方法。通过C#代码示例和实际项目经验,帮助开发者高效处理采购入库单,提升企业供应链管理效率。文章还涵盖了环境配置、异常处理、性能优化等关键技巧,适合U8二次开发人员参考。

weixin_33462927的博客 373

打印队列(Printer Queue)(优先队列)

学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。 输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时刻。所有任务都需要1分钟打印。例如,打印队列为{1,1,9,1,1,1},目前处于

韶言大雅 7606

用 deepseek 写小说(通用版提示词模板)

#Initialization:作为[Role],在[Goals]下,回顾你的[Skill],严格遵守[Constraints],5.第五步:人物大纲,给小说里的每个人物撰写背景故事,深挖人物过去的经历,原生家庭,住所:一栋位于市郊的房子,有三个卧室,房龄 10 年,厨房很大,当中有一个鸟式大理石。示例 2.戈德里洛克先去了熊老爹的工作坊,尝试用大纲法写作,却发现这种方法无聊透顶,1.第一步:一句话概括,一句话概述小说内容,主要包含小说癸型,主角,以及故事中需要。大灰狼的暴行彻底激怒了戈德里洛克,

陈奕昆的博客 2963

单板电源设计(LDO、DC/DC)

高速电路设计的电源架构 在电路设计中,一块单板往往涉及多种电源,常见的如5V/3.3V/2.5V/1.8V/1.5V/1.2V/1V0.9V/0.75V等,如此多种类的电源不可能都直接通过背板从电源板获得。一般,单板仅有一种或者两种输入电源,如48V或12V,再由它们产生单板上器件所需要的电源。 单板如何由输入电源生成所需电源,常见有两种架构:集中式电源架构和分布式电源架构。 ...

sinat_15677011的博客 8327

queue应用:UVA12100 打印队列

题目描述: 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。 输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时刻。所有任务都需要1分钟打印。例如,...

qq_48988844的博客 411

深入剖析Zynq AMP模式下CPU1中断响应机制:从原理到创新实践

在异构计算领域,Zynq-7000系列SoC的AMP(Asymmetric Multiprocessing)模式堪称多核编程的瑞士军刀。独立运行环境:CPU0运行Linux,CPU1运行FreeRTOS或裸机程序硬件资源独占:CPU0管理DDR,CPU1使用OCM(片上内存)中断隔离:默认所有中断路由到CPU0这种架构非常适合需要实时响应的工业控制系统——比如用CPU0处理网络通信,CPU1负责电机控制。AMP模式下中断路由的底层原理多维度性能优化技巧工业级可靠性的实现方案。

QQ_778132974的博客 490

Uva12100 Printer Queue

题目 The only printer in the computer science students’ union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in the printer queue and you may have to wait for hours to g...

404 Not Found 465

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UVA12100 打印队列 Printer Queue

题意描述 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。 输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时刻。所有任务都需要1分钟打印。例如,打印队列为{1,1,9,1,1,1}

LXYDSF的博客 800

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

习题5_7 打印队列(Printer Queue, ACM/ICPC NWERC 2006, UVa12100)

题目描述:        学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。        打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。

As_zyh的博客 665

uva12100解题报告

水题留念 一个队列模拟进出操作,一个优先队列保存优先级,模拟过程输出结果 #include #include #include #include using namespace std; const int maxn=100+10; typedef pair P; struct cmp { bool operator () (const P &p1,const P &p2)cons

董成荣的博客 821

洛谷-UVA12100 打印队列 Printer Queue

题目描述 PDF 输入格式 输出格式 题意翻译 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列...

大学生小汪的成长博客 956

UVA ~ 12100 ~ Printer Queue (队列 + 优先队列)

题意:学生会里只有一台打印机,但是由很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。打印机运作方式为:首先从打印队列中取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J。输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时

张松超的博客 664

Printer Queue UVA - 12100

https://cn.vjudge.net/problem/UVA-12100#author=100innovate 题目大意:学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9 间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务 J,如果队列里有比更急的任务,则直接把...

qq_43185391的博客 265

SDNUOJ 1612.Printer Queue (练习STL queue的用法)

Time Limit: 1000 MS Memory Limit: 32768 KB Description 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。 输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(

GETOVERMIND的博客 265
上一篇: POJ1681画家问题(枚举)采用位运算
下一篇: 并查集详解生动形象,hdu1232
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值