题意:给出两个队及每个队员的战斗力,b个战场,每一轮从两个队中选中b个职员来打斗,赢的队员进入下一轮,直到其中的一个队赢或者打平。

思路:将两个队放入两个优先级队列中,每次从两个队列中取出b个元素,放入到两上数组中,将两个数组进行比较,将不为0的数组元素重新加入队列中。

代码如下:

#include <iostream>
#include <queue>
#include <vector>
#include <fstream>class Solution
{
public:void init(int b, int sg, int sb){m_b = b; m_sg = sg; m_sb = sb;while (!g_queue.empty()) g_queue.pop();while (!b_queue.empty()) b_queue.pop();}void add_g(int num){g_queue.push(num);}void add_b(int num){b_queue.push(num);}void solve(){std::vector<int> vg(m_b), vb(m_b);while (!g_queue.empty() && !b_queue.empty()){for (int i = 0; i < m_b; i++){if (g_queue.empty()) break;int num = g_queue.top(); g_queue.pop();vg[i] = num;}for (int i = 0; i < m_b; i++){if (b_queue.empty()) break;int num = b_queue.top(); b_queue.pop();vb[i] = num;}for (int i = 0; i < m_b; i++){if (vg[i] > vb[i]){vg[i] -= vb[i];vb[i] = 0;}else if (vg[i] < vb[i]){vb[i] -= vg[i];vg[i] = 0;}else{vg[i] = vb[i] = 0;}}for (int i = 0; i < m_b; i++){if (vg[i] != 0){g_queue.push(vg[i]);vg[i] = 0;}if (vb[i] != 0){b_queue.push(vb[i]);vb[i] = 0;}}}if (g_queue.empty() && b_queue.empty()){std::cout << "green and blue died" << std::endl;}else if (g_queue.empty()){std::cout << "blue wins" << std::endl;while (!b_queue.empty()){int num = b_queue.top(); b_queue.pop();std::cout << num << std::endl;}}else{std::cout << "green wins" << std::endl;while (!g_queue.empty()){int num = g_queue.top(); g_queue.pop();std::cout << num << std::endl;}}}private:int m_b, m_sg, m_sb;std::priority_queue<int> g_queue, b_queue;
};int main() {
#ifndef ONLINE_JUDGEstd::ifstream fin("e:\\program\\clion\\uva_in.txt");std::streambuf* old = std::cin.rdbuf(fin.rdbuf());
#endifint n;std::cin >> n;Solution solver;while (n--){int b, sg, sb;std::cin >> b >> sg >> sb;solver.init(b, sg, sb);for (int i = 0; i < sg; i++){int num;std::cin >> num;solver.add_g(num);}for (int i = 0; i < sb; i++){int num;std::cin >> num;solver.add_b(num);}solver.solve();if (n) std::cout << std::endl;}#ifndef ONLINE_JUDGEstd::cin.rdbuf(old);
#endifreturn 0;
}

UVa978 - Lemmings Battle!(优先级队列)相关推荐

  1. 优先级队列广搜——坦克大战

    坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" in ...

  2. 优先级队列实现哈夫曼树的编码和译码

    //优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...

  3. 使用最小堆使用优先级队列(c语言版本)

    下面的例子来自Weiss的<数据结构与算法分析:c语言描述>,自己亲自敲了一遍,跑了个demo,并将结果记录下来. binheap.h的头文件声明 //description: 使最小堆实 ...

  4. 浅谈算法和数据结构: 五 优先级队列与堆排序

    原文:浅谈算法和数据结构: 五 优先级队列与堆排序 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏 ...

  5. C++ 优先级队列 priority_queue

    优先级队列(priority_queue)是一种容器适配器(container adaptor).它要求容器具有front.push_back.pop_back等操作,并且容器具有随机访问的能力,故优 ...

  6. 优先级队列(头条面试题)

    来源:算法面试题 优先级队列,不同于先进先出队列,其对每一个元素指定了优先级,一般情况下,出队时,优先级越高的元素越先出队.在面试过程中,优先级队列是面试官喜欢问的一个考点. 问题 (头条一面面试题) ...

  7. 并发队列-无界阻塞优先级队列

    PriorityBlockingQueue原理探究 一. 前言 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式 ...

  8. 35 线程优先级队列(queue)

    Python的queue模块中提供了同步的.线程安全的队列类,包括先进先出队列Queue.后进先出队列LifoQueue和优先级队列PriorityQueue.这些队列都是先了锁原语,可以直接使用来实 ...

  9. 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)

    文章目录 1 DFS模板 2 DFS例题-地下迷宫探索(深搜输出路径) 3 并查集 4 优先级队列-Huffman树 1 DFS模板 import math import cmath import s ...

最新文章

  1. R语言dim函数返回NULL
  2. 红黑树:自平衡的二叉查找树
  3. 系统架构师设计师2009-2016真题与模拟题汇总免费下载
  4. (视频+图文)机器学习入门系列-第5章 机器学习实践
  5. 在SqlServer中把多个job生成一个sql脚本
  6. Java多线程知识小抄集(三)
  7. java负数转换二进制表示_Java中的负数的在计算机中的二进制表示,以及与十进制的相互转换...
  8. 【GPU编程】The Cg Runtime:OpenGL中调用Cg程序
  9. Myeclipse学习总结(10)——MyEclipse2014导入项目时The project was not built since its build问题
  10. 第二期!团队开发spring会议~day8
  11. websocket binary 数据解析_websocket协议
  12. 流类库——输入输出流控制详解
  13. 数据挖掘中的KNN算法实现论文
  14. SCI论文 Introduction 部分没有思路,快来看看这个写作模板
  15. zookeeper初步
  16. Dubbo的多种序列化算法
  17. C# 修改本地以太网ip地址
  18. 【工大SCIR论文解读】WWW20 关键词生成提升电商会话推荐
  19. 亚马逊10000人大裁员已启动!谷歌绩效强制打低分跟风「毕业潮」
  20. 平安夜吃苹果想起的事

热门文章

  1. 417,你的能量不容低估,也不能高估
  2. Lombok(1.14.8) - @Synchronized
  3. Eclipse Java注释模板设置详解,更改 ${user}和${date}
  4. 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
  5. python快速编程入门第13章-Python快速编程入门,打牢基础必须知道的11个知识点...
  6. 零基础学python全彩版pdf-(特价书)零基础轻松学Python:青少年趣味编程(全彩版)...
  7. python自动化办公入门书籍推荐-用python进行办公自动化都需要学习什么知识呢?...
  8. python流程控制-实战案例手把手教你Python流程控制技巧
  9. python入门编程软件免费-Python 3.7.0编程软件免费下载
  10. python图片-Python图片处理