UVa978 - Lemmings Battle!(优先级队列)
题意:给出两个队及每个队员的战斗力,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!(优先级队列)相关推荐
- 优先级队列广搜——坦克大战
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" in ...
- 优先级队列实现哈夫曼树的编码和译码
//优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...
- 使用最小堆使用优先级队列(c语言版本)
下面的例子来自Weiss的<数据结构与算法分析:c语言描述>,自己亲自敲了一遍,跑了个demo,并将结果记录下来. binheap.h的头文件声明 //description: 使最小堆实 ...
- 浅谈算法和数据结构: 五 优先级队列与堆排序
原文:浅谈算法和数据结构: 五 优先级队列与堆排序 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏 ...
- C++ 优先级队列 priority_queue
优先级队列(priority_queue)是一种容器适配器(container adaptor).它要求容器具有front.push_back.pop_back等操作,并且容器具有随机访问的能力,故优 ...
- 优先级队列(头条面试题)
来源:算法面试题 优先级队列,不同于先进先出队列,其对每一个元素指定了优先级,一般情况下,出队时,优先级越高的元素越先出队.在面试过程中,优先级队列是面试官喜欢问的一个考点. 问题 (头条一面面试题) ...
- 并发队列-无界阻塞优先级队列
PriorityBlockingQueue原理探究 一. 前言 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式 ...
- 35 线程优先级队列(queue)
Python的queue模块中提供了同步的.线程安全的队列类,包括先进先出队列Queue.后进先出队列LifoQueue和优先级队列PriorityQueue.这些队列都是先了锁原语,可以直接使用来实 ...
- 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
文章目录 1 DFS模板 2 DFS例题-地下迷宫探索(深搜输出路径) 3 并查集 4 优先级队列-Huffman树 1 DFS模板 import math import cmath import s ...
最新文章
- R语言dim函数返回NULL
- 红黑树:自平衡的二叉查找树
- 系统架构师设计师2009-2016真题与模拟题汇总免费下载
- (视频+图文)机器学习入门系列-第5章 机器学习实践
- 在SqlServer中把多个job生成一个sql脚本
- Java多线程知识小抄集(三)
- java负数转换二进制表示_Java中的负数的在计算机中的二进制表示,以及与十进制的相互转换...
- 【GPU编程】The Cg Runtime:OpenGL中调用Cg程序
- Myeclipse学习总结(10)——MyEclipse2014导入项目时The project was not built since its build问题
- 第二期!团队开发spring会议~day8
- websocket binary 数据解析_websocket协议
- 流类库——输入输出流控制详解
- 数据挖掘中的KNN算法实现论文
- SCI论文 Introduction 部分没有思路,快来看看这个写作模板
- zookeeper初步
- Dubbo的多种序列化算法
- C# 修改本地以太网ip地址
- 【工大SCIR论文解读】WWW20 关键词生成提升电商会话推荐
- 亚马逊10000人大裁员已启动!谷歌绩效强制打低分跟风「毕业潮」
- 平安夜吃苹果想起的事
热门文章
- 417,你的能量不容低估,也不能高估
- Lombok(1.14.8) - @Synchronized
- Eclipse Java注释模板设置详解,更改 ${user}和${date}
- 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
- python快速编程入门第13章-Python快速编程入门,打牢基础必须知道的11个知识点...
- 零基础学python全彩版pdf-(特价书)零基础轻松学Python:青少年趣味编程(全彩版)...
- python自动化办公入门书籍推荐-用python进行办公自动化都需要学习什么知识呢?...
- python流程控制-实战案例手把手教你Python流程控制技巧
- python入门编程软件免费-Python 3.7.0编程软件免费下载
- python图片-Python图片处理