Dota2参议院[贪心与队列]
贪心与队列
- 前言
- 一、dota2参议院
- 二、贪心与队列
- 总结
- 参考文献
前言
贪心思想 与 队列数据结构的配合,算法题往往就是这样,一种思想配一些数据结构来完美解题。
一、dota2参议院
二、贪心与队列
target:每个人都有禁止别人 和 被别人禁止的 功能,有两队人马,根据顺序,以最好的策略禁止对方,那边会赢?
1-什么是最好的方式禁止对方?
一方得到投票权,那就把最近的另一方可投票的人禁止,让其发挥不了禁止权就被踢出局,那么前一方就尽可能的少损失队员。
core:让一个人还没发挥禁止权就把他踢出局,这是最好的;其次才是把发挥过禁止权的踢出局;
2-怎么才能快速找到另一方的投票人(找到了才能禁止啊!)?
可把两方分类,存入两方人的位置。
3-怎么才能把把禁止的人踢出,而且让禁止别人的人放在后面下一轮再投票?
位置处于小的即处于优势,另一类出队列就不用再入队了,有优势一方入队,且只能在下一轮有禁止优势,则将位置增大n >= senate.length
package everyday.greed;import java.util.LinkedList;
import java.util.Queue;// Dota2参议院
public class PredictPartyVictory {/*target:每个人都有禁止别人 和 被别人禁止的 功能,有两队人马,根据顺序,以最好的策略禁止对方,那边会赢?什么是最好的方式禁止对方?一方得到投票权,那就把最近的另一方可投票的人禁止,让其发挥不了禁止权就被踢出局,那么前一方就尽可能的少损失队员。core:让一个人还没发挥禁止权就把他踢出局,这是最好的;其次才是把发挥过禁止权的踢出局;怎么才能快速找到另一方的投票人(找到了才能禁止啊!)?可把两方分类,存入两方人的位置。怎么才能把把禁止的人踢出,而且让禁止别人的人放在后面下一轮再投票?位置处于小的即处于优势,另一类出队列就不用再入队了,有优势一方入队,且只能在下一轮有禁止优势,则将位置增大n >= senate.length注:模拟起来复杂的地方,就应该换思路/换角度看,利用已学的数据机构和算法思维来关联。注:多问为什么?不仅包括深挖与探究,还包括为什么会想到这个解题答案,问题与答案有什么关联?不能纯靠题感!要双份保险,让我笔试能过。注:平时主多个为什么;竞赛主题感。毕竟平时的积累,才能把题感拉起来。*/public String predictPartyVictory(String senate) {// 位置属性 & 类别属性Queue<Integer> r = new LinkedList<>();Queue<Integer> d = new LinkedList<>();char[] arr = senate.toCharArray();int i = 0, n = arr.length;for (char c : arr) {if (c == 'R') r.offer(i++);else d.offer(i++);}while (!r.isEmpty() && !d.isEmpty()) {int a = r.poll(), b = d.poll();if (a < b) {r.offer(a + n);} else d.offer(b + n);}return r.isEmpty() ? "Dire" : "Radiant";}
}
总结
1)模拟起来复杂的地方,就应该换思路/换角度看,利用已学的数据机构和算法思维来关联。
2)多问为什么?不仅包括深挖与探究,还包括为什么会想到这个解题答案,问题与答案有什么关联?不能纯靠题感!要双份保险,让我笔试能过。
3)平时主多个为什么;竞赛主题感。毕竟平时的积累,才能把题感拉起来。
参考文献
[1] LeetCode Dota2参议院
Dota2参议院[贪心与队列]相关推荐
- LeetCode 649. Dota2 参议院(循环队列)
文章目录 1. 题目 2. 解题 1. 题目 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游 ...
- leetcode649(Dota2 参议院:循环队列)
Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...
- Dota2参议院——贪心算法
文章目录 题目描述 题目分析 数据结构和算法 代码 题目描述 题目来源:图灵官方 题目分析 题目大概意思就是,参议院由两派的参议员组成,即给定一个字符串,只含R和D,双方可以互相废除对方的人员,不参与 ...
- Dota2参议院-贪心649-python
没看答案,贪心思想. class Solution:def predictPartyVictory(self, senate: str) -> str:'''贪心思想胜利策略:优先ban后面出现 ...
- 贪心 - Dota2 参议院
Dota2 参议院 贪心+循环队列 对于当前参议院来说,他的最优选择是禁止下一个最先出现的敌方参议员,这样才能保证己方参议院的安全. 具体的实现采用循环队列. class Solution {publ ...
- LeetCode每日一题--649. Dota2 参议院(贪心 队列)
题目:跳转至 649. Dota2 参议院 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏 ...
- leetcode 649. Dota2 参议院(贪心算法)
Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...
- 【力扣649】【秒懂】 Dota2 参议院 之双端队列的解体
题目 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过 ...
- 算法刷题打卡第43天:Dota2 参议院
Dota2 参议院 难度:中等 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出 ...
最新文章
- 安装了超图、oracle、eclipse、JDK后系统的java进程情况以及java.exe、javaw.exe
- 为啥总让我“先去博客园其他网站逛逛”?
- Tkinter的Text组件
- linux查看信息文件,lsof---Linux查看文件信息的强大工具
- Deep Learning(深度学习) 学习笔记(四)
- 递归和迭代路由_静态路由在以太网接口中的不同书写会导致路由器怎样的操作结果?...
- WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()
- 第九节:基于MVC5+AutoFac+EF+Log4Net的基础结构搭建
- Cygwin中如何像在Ubuntu中一样安装软件
- nuttx linux 编译,linux下建立nuttx开发环境
- 连接数据库是显示无法连接到服务器,数据库无法连接到服务器怎么办(解决服务器连接故障的技巧)...
- 国内ERP技术公司综合
- 画出psnr_计算图像的峰值信噪比PSNR以及均方根误差MSE
- 怎么把度分秒化成小数_excel中批量将经纬度度分秒转换成十进制小数点的方法介绍...
- (四)keycloak 自定义用户(SPI)开发
- python 统计检验_常用统计检验的Python实现(附完整代码)
- [原创]火箭发动机设计---民科版
- 使用CDN加速的优点
- 利用qq账号查询所绑定的手机号码_怎么不用手机号注册新微信账号 免手机号申请方法分享...
- 网页版微信自动群发消息