当前位置: 首页 > wzjs >正文

网站界面设计中的版式设计有哪些青岛网站建设方案服务

网站界面设计中的版式设计有哪些,青岛网站建设方案服务,怎么做网站广告位,全国今日生猪价格一览表题目 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一…

题目

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

一、代码实现

func predictPartyVictory(senate string) string {radiant := make([]int, 0)dire := make([]int, 0)n := len(senate)// 初始化队列,记录每个议员的位置for i, ch := range senate {if ch == 'R' {radiant = append(radiant, i)} else {dire = append(dire, i)}}// 模拟投票过程for len(radiant) > 0 && len(dire) > 0 {r := radiant[0]d := dire[0]radiant = radiant[1:]dire = dire[1:]// 位置靠前的议员禁止对方,并进入下一轮if r < d {radiant = append(radiant, r + n)} else {dire = append(dire, d + n)}}if len(radiant) > 0 {return "Radiant"}return "Dire"
}

二、算法分析

1. 核心思路
  • 贪心策略:每个议员优先禁止下一个最近的敌方议员,以最大化己方优势
  • 循环队列模拟:用两个队列分别存储双方议员的位置,通过位置比较实现投票轮次模拟
2. 关键步骤
  1. 初始化队列:遍历字符串,将R/D的位置分别存入两个队列
  2. 循环比较:每次取队列头部元素比较位置,较小者(先投票)禁止对方议员
  3. 下一轮入队:胜者将自己的位置加n(总人数)后重新入队,模拟循环投票
  4. 终止条件:当某一队列为空时,另一方获胜
3. 复杂度
指标说明
时间复杂度O(n)每个元素最多入队、出队各一次
空间复杂度O(n)存储所有参议员位置

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 全R/D字符串:直接返回对应阵营
  • 交替序列:如"RDRDRD" → 最终由最后一个议员决定胜负
  • 单议员场景:输入长度1时直接返回对应阵营
2. 多语言实现
# Python实现(deque优化)
from collections import dequedef predictPartyVictory(senate: str) -> str:radiant = deque()dire = deque()n = len(senate)for i, ch in enumerate(senate):if ch == 'R':radiant.append(i)else:dire.append(i)while radiant and dire:r = radiant.popleft()d = dire.popleft()if r < d:radiant.append(r + n)else:dire.append(d + n)return "Radiant" if radiant else "Dire"
// Java实现(LinkedList)
public String predictPartyVictory(String senate) {Queue<Integer> radiant = new LinkedList<>();Queue<Integer> dire = new LinkedList<>();int n = senate.length();for (int i = 0; i < n; i++) {if (senate.charAt(i) == 'R') radiant.offer(i);else dire.offer(i);}while (!radiant.isEmpty() && !dire.isEmpty()) {int r = radiant.poll(), d = dire.poll();if (r < d) radiant.offer(r + n);else dire.offer(d + n);}return radiant.isEmpty() ? "Dire" : "Radiant";
}

五、总结与扩展

1. 核心创新点
  • 循环索引设计:通过 +n 实现议员位置的循环复用,避免重新生成队列
  • 贪心策略证明:优先禁止最近敌方议员可最小化己方损失(数学归纳法可证)
2. 扩展应用
  • 多阵营选举:扩展为多个队列处理,比较优先级
  • 动态投票权:引入权重因子(如议员等级)
  • 实时统计系统:统计时间窗口内的请求频率(类似LeetCode 933)
3. 工程优化方向
  • 内存预分配:根据输入长度初始化队列容量
  • 并行处理:多线程处理大规模参议员场景
http://www.dtcms.com/wzjs/418180.html

相关文章:

  • 机械设备网合肥网站推广优化
  • 买虚机送网站建设顺德搜索seo网络推广
  • 新闻发布网站建设实训小结百度开户需要什么条件
  • 手机可以做3d动漫视频网站有哪些免费关键词优化工具
  • 手机版网站做一下多少钱2024最火的十大新闻有哪些
  • 网站空间管理谷歌google浏览器
  • qq查冻结网站怎么做百度视频推广怎么收费
  • 阆中 网站建设免费二级域名分发网站
  • 东莞网络推广网站日本比分预测最新分析
  • 搭建一个商城网站免费发布产品的平台
  • 事业单位网站建设注销情况说明国际外贸网络交易平台
  • 怎么样做网站注册量购买域名后如何建立网站
  • 怎么简单做网站排名seo综合查询工具可以查看哪些数据
  • vipsystem for wordpressseo全网优化指南
  • 重庆公司专业建站百度seo快速排名优化服务
  • 网站弹出信息怎么做国内最大的搜索引擎
  • 甜品网站开发需求分析做销售怎么和客户聊天
  • 的物app宁波seo优化服务
  • 做网站市场分析微信crm系统软件
  • 天府新区规划建设国土局网站百度sem是什么意思
  • 珠海网站建设怎么样360推广平台登录入口
  • 成都网站制作机构网站优化有哪些类型
  • 办网站费用多少钱惠州网站seo
  • wordpress站点标题和副标题百度网盘搜索
  • 手机版网站怎么做的百度收录情况
  • 淄博建网站网站更新seo
  • 自己的网站怎么做优化百度官网下载安装
  • 学校校园网站建设网站优化排名公司哪家好
  • 网站如何做微信支付江苏企业网站建设
  • 阿里云建站文章搜索在哪里推广自己的产品