Gym 102452G Game Design 搜索+计数原理

该博客探讨了在游戏设计中如何利用搜索和计数原理来构造二叉树,确保每个节点都有防御。通过将叶子节点的防御成本设为1,分析节点与其子节点的关系,提出自顶向下分配方案数和自底向上计算代价的策略。当剩余方案数为奇数时,只分配给一个子节点,反之则平均分配给两个子节点。最后给出了实现此策略的代码片段。
摘要由CSDN通过智能技术生成

http://www.caiyiwen.tech/article/20.html

  • G - Game Design
    • 这一题是构造题,我们必须想出一种策略可以使树上的结点数满足要求。
    • 为了简化构造难度,我们可以试图把每一个点都作为某个答案中的一个点,并且只考虑二叉树。显然,每个叶子结点都设防是满足条件的情况,我们把每个叶子结点的代价都设为1.
    • 考虑一个结点和它的两个子结点的关系,如果它的两个子结点都被防住(不一定是在子结点处设防,也可能在子结点的子结点设防),那么这个父结点就无须设防了。设两个子结点能防住的最小代价分别为a和b,那么父结点如果也要成为最优的一种情况,其代价就必须为a+b。
    • 下面考虑方案数分配,如果一个结点的两个子结点分别有防住最优方案数m种和n种,那么这个结点防住的方案数就是mn+1种(根据乘法原理可得两个子结点为根的子树中设防的方案有mn种,当前结点设防有1种)。
    • 所以,我们容易想到思路——从上向下分配方案数,自下而上回溯时算出代价(我们设每个叶子结点代价均为1)。
    • 如何分配树的形态?
    • 原来我们有K种方案;
    • 当我们即将要分配一个结点,还剩k种方案时,我们先给这个结点分配1种方案,子结点要分配k-1种方案。若k-1为奇数,我们只给这个结点分配一个子结点,这个子结点分配1种方案,这样剩下k-2种方案(为偶数);若k-1为偶数,我们给这个结点分配两个子结点,其中一个分配2种方案,另外一个分配(k-1)/2种方案。直到方案数为1,停止递归即可。

代码:

#include<cstdio>
using namespace std;
int far[(int)1e5+10],value[(int)1e5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyCharm是一个集成开发环境(IDE),用于Python编程语言的开发。它提供了许多功能,例如代码编辑、调试和版本控制等。Gym是一个用于开发和比较强化学习算法的开源Python库。它提供了许多预定义的环境,供开发者进行强化学习实验。在安装深度强化学习环境的教程中,引用提到了在Windows 10上安装Anaconda、PyTorch、PyCharm和Gym等软件和包。引用提到了需要下载的软件和包,包括Anaconda、Pycharm、Python、PyTorch、Gym以及Pygame等。而引用中提到了通过pip命令来安装Gym库。综上所述,PyCharm和Gym都是用于Python开发和深度强化学习的工具和库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [DRL环境安装:Win10+Anaconda+PyTorch+PyCharm+Gym](https://blog.csdn.net/weixin_42480812/article/details/112054592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Anaconda+PyCharm+PyTorch+Gym深度强化学习环境搭建 送新手直接送进炼丹炉](https://blog.csdn.net/qq_43674552/article/details/127343863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值