Problem on Group Trip UVALive - 7219 (模拟+优先队列处理)

2024-04-29 13:32

本文主要是介绍Problem on Group Trip UVALive - 7219 (模拟+优先队列处理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击打开链接

题目大意:有三个浴池s1,s2,s3,有n个人。每个人在每个浴池中所呆的时间为s[i].m1,s[i].m2,s[i].m3. 每次进浴池的时候要按n个人的序号的大小进行排队。

3

10 25 15

0 0 25

0 15 10

例如上面这组数据,有三个人,第一个人在s1中的时间是10,在s2中的时间是25,在s3中的时间是15,

0表示这个人不需要再该浴池中,而且每个人进入浴池的顺序是先进s1,再进s2,最后进s3,如果在si中的时间是0的话可以跳过该浴池进入下一个浴池排队等候,(注意每次排队是根据序号大小,而不是先来后到的顺序);

题解:根据要求进行模拟即可,有优先队列进行存储排队的人会容易处理点,在判断第i个浴池中有没有人或还来不来人的时候要看当前队列中是否为空和前面浴池队列中是否为空。

#include<bits/stdc++.h>using namespace std;
struct node
{int m1,m2,m3;
} s[111];
priority_queue<int ,vector<int >,greater<int> >q[10];
int main()
{int t;int w=1;scanf("%d",&t);while(t--){for(int i=0; i<=5; i++)while(!q[i].empty())q[i].pop();int n;scanf("%d",&n);for(int i=1; i<=n; i++){scanf("%d%d%d",&s[i].m1,&s[i].m2,&s[i].m3);if(s[i].m1!=0){q[1].push(i);}else if(s[i].m2!=0){q[2].push(i);}else if(s[i].m3!=0){q[3].push(i);}}long long sum=0;int x=0,y=0,z=0;if(!q[1].empty()){x=q[1].top();q[1].pop();}if(!q[2].empty()){y=q[2].top();q[2].pop();}if(!q[3].empty()){z=q[3].top();q[3].pop();}//cout<<x<<" "<<y<<" "<<z<<endl;int xx,yy,zz;xx=yy=zz=0;while(1){if(xx&&yy&&zz)break;sum++;if(!xx){if(x!=0){if(s[x].m1!=0)s[x].m1--;else{if(s[x].m2!=0)q[2].push(x);else if(s[x].m3!=0)q[3].push(x);if(!q[1].empty()){x=q[1].top();q[1].pop();s[x].m1--;}else xx=1;}}else xx=1;}if(!yy){if(y!=0){if(s[y].m2!=0)s[y].m2--;else{if(s[y].m3!=0)q[3].push(y);if(!q[2].empty()){y=q[2].top();q[2].pop();s[y].m2--;}else{if(xx==1)yy=1;else y=0;}}}else{if(q[2].empty()&&xx==1)yy=1;else if(!q[2].empty()){y=q[2].top();q[2].pop();s[y].m2--;}}}if(!zz){if(z!=0){if(s[z].m3!=0)s[z].m3--;else{if(!q[3].empty()){z=q[3].top();q[3].pop();s[z].m3--;}else{if(xx==1&&yy==1)zz=1;else z=0;}}}else{if(q[3].empty()&&xx&&yy)zz=1;else if(!q[3].empty()){z=q[3].top();q[3].pop();s[z].m3--;}}}}printf("Case #%d: %lld\n",w++,sum-1);}return 0;
}


这篇关于Problem on Group Trip UVALive - 7219 (模拟+优先队列处理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946216

相关文章

百度OCR识别结构结构化处理视频

https://edu.csdn.net/course/detail/10506

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

基于 Java 实现的智能客服聊天工具模拟场景

服务端代码 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Serv

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征 在机器学习领域,朴素贝叶斯是一种常用的分类算法,它的简单性和高效性使得它在实际应用中得到了广泛的应用。然而,在使用朴素贝叶斯算法进行分类时,我们通常会面临一个重要的问题,就是如何处理连续特征和离散特征。因为朴素贝叶斯算法基于特征的条件独立性假设,所以对于不同类型的特征,我们需要采取不同的处理方式。 在本篇博客中,我们将探讨如何有效地处理

神经网络第四篇:推理处理之手写数字识别

到目前为止,我们已经介绍完了神经网络的基本结构,现在用一个图像识别示例对前面的知识作整体的总结。本专题知识点如下: MNIST数据集图像数据转图像神经网络的推理处理批处理  MNIST数据集          mnist数据图像 MNIST数据集由0到9的数字图像构成。像素取值在0到255之间。每个图像数据都相应地标有“7”、“2”、“1”等数字标签。MNIST数据集中,

vue怎么处理跨域

Vue.js 本身并不直接解决跨域问题,因为跨域问题主要是浏览器基于同源策略(Same-origin policy)的一种安全限制。然而,在Vue.js项目中,我们可以采取一些策略来绕过或处理跨域问题。 解决跨域问题的常用方法: 代理服务器:在开发环境中,我们可以配置一个代理服务器来转发API请求,从而绕过浏览器的同源策略。Vue CLI 提供了内置的代理功能,可以在 vue.config.j

【机器学习】自然语言处理的新前沿:GPT-4与Beyond

📝个人主页:哈__ 期待您的关注  目录 🔥引言 背景介绍 文章目的 一、GPT-4简介 GPT-4概述 主要特性 局限性和挑战 二、自监督学习的新进展 自监督学习的原理 代表性模型和技术 三、少样本学习和零样本学习 少样本学习的挑战 先进方法 四、跨模态学习 跨模态学习的概念 代表性技术 应用场景 第五部分:可解释性和透明性 AI的可解释

【文末附gpt升级秘笈】腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑

腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑 一、引言 随着人工智能技术的飞速发展,自然语言处理(NLP)和机器学习(ML)在各行各业的应用日益广泛。其中,AI搜索解析能力作为信息检索和知识抽取的核心技术,受到了广泛的关注和研究。腾讯作为互联网行业的领军企业,其在AI领域的探索和创新一直走在前列。近日,腾讯旗下的AI大模型应用——腾讯元宝,迎来了1.1.7版本的升级,新版本在AI搜

AndroidStudio打包处理

AndroidStudio非常强大,公司最近有一个需求是要实现对一个APP进行多个版本的打包,而且可以同时安装在手机上。这个需求详细一点的描述是:公司有一个APP,有多个开发商要使用我们的APP,为了大家都想有一个自己的APP,而且图标不一样,app名字不一样,背景不一样等。我查询了一下资料发现,在AndroidStudio的gradle是可以配置的。在此特意写一篇文章记录分享。 配置签名 首

【数据结构与算法 经典例题】使用队列实现栈(图文详解)

💓 博客主页:倔强的石头的CSDN主页               📝Gitee主页:倔强的石头的gitee主页    ⏩ 文章专栏:《数据结构与算法 经典例题》C语言                                   期待您的关注 ​​ 目录  一、问题描述 二、前置知识 三、解题思路 四、C语言实现代码 🍃队列实现代码: