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

福建网站建设科技有限公司那些网站做的非常好看的

福建网站建设科技有限公司,那些网站做的非常好看的,海外网络营销推广,wordpress copyfeed智乃与长短期主义者博弈 题目描述 在博弈游戏中,往往存在长期主义者、短期主义者两种角色 短期主义者就像是一个贪婪无比的短视地精,他只会选择当前步骤中所有局部选择的最优解 长期主义者就好比一个经验丰富的千层饼,他总会选择在每个步骤…


智乃与长短期主义者博弈

题目描述

在博弈游戏中,往往存在长期主义者、短期主义者两种角色
短期主义者就像是一个贪婪无比的短视地精,他只会选择当前步骤中所有局部选择的最优解
长期主义者就好比一个经验丰富的千层饼,他总会选择在每个步骤中选择能达到全局最优的决策,哪怕对于当前阶段可能是亏损的
显然,长期主义者是否明知对方的行动模式,对于他构建自己的全局最优决策存在非常大的影响
在本题中,长期主义者将被明确告知短期主义者的行动模式,他将以此作为已知条件构建他的最优决策

现在有这样一个游戏,有n个整数排成一排,两个人轮流取数,每次只能从两端的数字中选择一个取走

例如一开始有3个数字为1,3,2 则一开始只能拿1或者2,只有当1或者2被取走后才能拿到中间的3

短期主义者总是选择两端中较大的数字,并且如果两数相同,则选择最左端的数字,而长期主义者(已知对方的行动模式)总是选择对于全局最优的决策

两人均以最大化自己的得分为目标,假设短期主义者先手,则最终二者博弈的得分各自是多少?


输入描述:

第一行输入一个正整数 n n n(1≤ n n n≤1000)表示整数的个数

接下来另起一行,输入 n n n个正整数 a i a_i ai (1≤ a i a_i ai​≤1e6 )表示这一排整数的内容

输出描述:

在一行内输出两个整数,分别表示短期主义者、长期主义者的得分,整数之间用一个空格隔开


示例输入1

6
1 100 1 100 1 100

示例输出1

300 3

示例输入2

7
4 5 7 6 2 3 1

示例输出2

14 14

解题思路:

为了理解并解决这个问题,我们需要明确长期主义者和短期主义者的策略,并使用区间DP来计算他们的得分。

【算法】动态规划专题⑪ —— 区间DP python


问题分析

  1. 短期主义者的策略

    • 总是选择两端中较大的数字。
    • 如果两数相同,则选择最左端的数字。
  2. 长期主义者的策略

    • 已知对方的行动模式,总是选择对全局最优的决策。
    • 目标是最大化自己的得分。
  3. 博弈过程

    • 两人轮流取数,每次只能从两端的数字中选择一个取走。
    • 短期主义者先手。

具体步骤

定义一个二维DP数组 dp[i][j] 表示在区间 [i, j] 内长期主义者能够获得的最大得分。
为了简化问题,我们还需要记录整个序列的总和,以便计算短期主义者的得分。

  1. 初始化

    • 对于长度为1的子序列,长期主义者无法得分(因为短期主义者先手),所以 dp[i][i] = 0
    • 对于长度为2的子序列,长期主义者可以取较小的那个数,因此 dp[i][i+1] = min(a[i], a[i+1])
  2. 状态转移方程

    • 对于每个长度大于等于3的子序列 [i, j],我们需要考虑两种情况:
      • 如果短期主义者选择了左边的数 a[i],那么长期主义者可以选择 a[j] 或者 a[i+1]
      • 如果短期主义者选择了右边的数 a[j],那么长期主义者可以选择 a[i] 或者 a[j-1]

code如下:

n = int(input())
a = list(map(int, input().split()))
dp = [[0] * n for _ in range(n)]
# dp[i][j]:长期主义者最大得分for i in range(n):  # 初始化dp[i][i] = 0if i < n - 1:dp[i][i + 1] = min(a[i], a[i + 1])
for len in range(3, n + 1):for i in range(n - len + 1):j = i + len - 1if a[i] >= a[j]:dp[i][j] = max(dp[i + 1][j - 1] + a[j], dp[i + 2][j] + a[i + 1])else:dp[i][j] = max(dp[i + 1][j - 1] + a[i], dp[i][j - 2] + a[j - 1])print(sum(a) - dp[0][n - 1], dp[0][n - 1])


END
如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢

http://www.dtcms.com/a/574027.html

相关文章:

  • 网站建设老李教学网站商务贸易网站建设
  • 11.5 脚本 本地网站收藏(解封归来)
  • Web APIs 学习第四天:DOM事件进阶
  • 后台网站设计织梦 蓝色 个人网站博客网站源码
  • 余姚网站建设公司wordpress 支付宝免签
  • 仓颉编程语言基础集合类型详解:从Array到HashMap的实战指南(一)
  • 网站负责人姓名wordpress 阿里百秀主题
  • 【C++学习】deque容器
  • 网站程序代码更加精准高效的措施
  • 宁波网站建设h5哪个做网站平台好
  • Apache IoTDB 技术深度解析:存储引擎、查询优化与分布式架构在工业物联网、智慧能源和车联网场景的应用指南
  • rap2部署
  • IOT-VIP——STM32F031K6U6+RS485+显示屏
  • 工业互联网 “云 - 边 - 端” 架构
  • c#网站开发框架深圳网站建设收费
  • MAC电脑上拉取Git仓库的方法
  • 怎样在网做旅游网站顺企网浙江网站建设
  • 时序数据库系列(四):InfluxQL查询语言详解
  • 如何建设专业化的网站全球搜索网站排名
  • Android WebView - loadUrl 方法的长度限制
  • 温州网站推广公司wordpress万能
  • 开题报告之基于SpringBoot框架的在线答题网站的设计与实现
  • 珠海建站专业做辅助的网站
  • 南山做网站海外购物app排行榜前十名
  • 从一题了解 CROSS JOIN 与 DATEDIFF:SQL 天气温度对比实战
  • js:requestAnimationFrame的使用
  • 【JUnit实战3_29】第十八章:REST API 接口测试(上)——RESTful 风格的后端 API 的搭建
  • 回调函数的作用与举例(Python版)
  • 克旗网站制作5229998建设银行网站会员
  • 洛阳市政建设网站网站建设中 html免费