参议院算法Java

2023-09-21 21:22:21

Dota2 的世界里有两个阵营: Radiant(天辉)和 Dire(夜魇)
Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定,他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:
禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利: 如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并决定在游戏中的有关变化。
给定一个字符串代表每个参议员的阵营。字母“R”和“D”分别代表了 Radiant(天辉)和Dire(夜魇)。然后,如果有 n 个参议员,给定字符串的大小将是 n。以轮为基础的过程从给定顺序的第一个参议员开始到最后一个参议员结束。这一过程将持续到投票结束。所有失去权利的参议员将在过程中被跳过。
假设每一位参议员都足够聪明,会为自己的政党做出最好的策略,你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。输出应该是Radiant 或Dire.

public static void main(String[] args) {
        System.out.println("获胜者:" + rd("RDDR"));
    }

    private static String rd(String dota) {
        int length = dota.length();
        Queue<Integer> r = new LinkedList<>();
        Queue<Integer> d = new LinkedList<>();
        for (int i = 0; i < length; i++) {
            if (dota.charAt(i) == 'R') {
                r.offer(i);
            } else {
                d.offer(i);
            }
        }
        while (!r.isEmpty() && !d.isEmpty()) {
            int rPoll = r.poll(), dPoll = d.poll();
            if (rPoll < dPoll) {
                r.offer(rPoll + length);
            } else {
                d.offer(dPoll + length);
            }
        }
        if (r.isEmpty()) {
            return "Dire";
        } else {
            return "Radiant";
        }
    }

更多推荐

ChatGPT追祖寻宗:GPT-2论文要点解读

论文地址:LanguageModelsareUnsupervisedMultitaskLearners上篇:GPT-1论文要点解读在上篇:GPT-1论文要点解读中我们介绍了GPT1论文中的相关要点内容,其实自GPT模型诞生以来,其核心模型架构基本没有太大的改变,都是一路坚持奉行着基于Transformer的单解码器结构

触摸芯片在小功率音箱中的应用

音箱的基本组成部分包括扬声器单元和放大器。扬声器单元是产生声音的核心部件,而放大器则负责放大电信号,使其能够驱动扬声器单元。当我们使用音箱播放音乐时,音频信号首先通过音源设备(如音乐播放器、电视、电脑等)发送到音箱。这个音频信号是以电信号的形式存在的,无法直接被我们听到。喇叭的音质完全取决于喇叭本身的好坏,而不是功率,

关于header in Cpp

ctype.h是一个headerinCpp,什么是header?在C++中,头文件(headerfile)是一种用于包含预定义函数、变量和声明的文件。头文件通常具有.h扩展名,并包含了用于在C++程序中使用的函数原型、常量定义、类声明等信息。头文件的主要目的是为了在不同的源代码文件之间共享代码和声明,以便在程序中能够正

uvm白皮书练习_ch2_ch221只有driver的验证平台之*2.2.1 最简单的验证平台

uvm白皮书练习ch221dut.sv这个DUT的功能非常简单,通过rxd接收数据,再通过txd发送出去。其中rx_dv是接收的数据有效指示,tx_en是发送的数据有效指示。moduledut(clk,rst_n,rxd,rx_dv,txd,tx_en);inputclk;inputrst_n;inputrxd;inp

nginx入门

文章目录nginx1.安装2.nginx常用命令及配置文件3.配置静态网页listenserver_namelocation4.HTTP反向代理设置代理请求headers5.负载均衡负载均衡策略1.轮循机制(round-robin)2.最小连接(least-connected)3.ip-hashnginx1.安装Cen

多平台兼容性:跑腿系统开发的移动端和Web端技术选项

随着移动设备和Web浏览器的广泛使用,跑腿系统的开发需要考虑多平台兼容性。本文将讨论一些在开发跑腿系统的移动端和Web端时可用的技术选项,并提供示例代码以帮助您入门。移动端技术选项:1.ReactNativeReactNative是一个流行的移动应用开发框架,可以使用JavaScript和React构建原生级别的移动应

CFCA企业版通配符SSL证书

CFCA是中国CFCA企业版通配符SSL证书金融认证中心的缩写,即ChinaFinancialCertificationAuthority。它是一家经过中国人民银行和国家信息安全机构批准成立的国家级权威安全认证机构,也是国际CA浏览器联盟组织(CA/BrowserForum)的成员,遵循全球统一鉴证标准。CFCA证书是

数据结构——红黑树

红黑树(Red-BlackTree)是一种自平衡的二叉查找树,它确保在插入和删除等基本操作后,树保持平衡,从而提供了快速的查找、插入和删除操作。红黑树之所以称为"红黑树",是因为每个节点都具有一个颜色属性,可以是红色或黑色,它们必须满足一些规则以保持树的平衡性。性质:1.树中的任何一个结点都带有颜色,每个结点的颜色要么

leetcode1537. 最大得分(动态规划-java)

最大得分题目描述动态规划代码演示题目描述难度-困难leetcode1537.最大得分你有两个有序且数组内元素互不相同的数组nums1和nums2。一条合法路径定义如下:选择数组nums1或者nums2开始遍历(从下标0处开始)。从左到右遍历当前数组。如果你遇到了nums1和nums2中都存在的值,那么你可以切换路径到另

长沙专业消费者调查公司:为你的市场决策提供强大支持

在当今竞争激烈的市场环境中,准确把握消费者需求是取得成功的关键。群狼调研(长沙口味测试)作为长沙专业消费者调查公司,以其专业的市场研究能力和丰富的行业经验,为众多企业提供高质量的消费者调查服务,帮助它们精准定位目标消费者,优化营销策略。群狼调研(长沙品牌传播效果测评)自成立以来,一直致力于打造一个集市场调查、数据分析、

嵌入式-C语言关系运算符

目录一.简介一.简介C语言关系运算符是用来比较两个值之间的关系并返回一个布尔值(真或假)的运算符。以下是C语言中常用的关系运算符:1.等于(==):检查两个值是否相等,如果相等则返回真(1),否则返回假(0)。例如10==5为false(0),2==2为true(1)2.不等于(!=):检查两个值是否不相等,如果不相等

热文推荐