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

富源县建设局的网站是什么做的比较好旅游网站

富源县建设局的网站是什么,做的比较好旅游网站,淮南网站建设价格,大同网站建设推广227. 交换次数(贪心) 1. 2018年蓝桥杯国赛 - 交换次数(中等) 标签:2018 暴力 国赛 1.1 题目描述 IT 产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称 BAT )在某海滩进行招聘活动。…

227. 交换次数(贪心)

1. 2018年蓝桥杯国赛 - 交换次数(中等)

标签:2018 暴力 国赛

1.1 题目描述

IT 产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称 BAT )在某海滩进行招聘活动。

招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:BABTATT,这使得应聘者十分别扭。

于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:BBAAATTT 这样的形状,当然,也可能是:AAABBTTT 等。

现在,假设每次只能交换 2 个席位,并且知道现在的席位分布,你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。

1.2 输入描述

输入是一行 n n n 个字符(只含有字母 B、A 或 T ),表示现在的席位分布。

1.3 输出描述

输出是一个整数,表示至少交换次数。

1.4 输入输出样例

示例

输入

TABTABBTTTT

输出

3

1.5 运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

2. 解题思路

2.1 问题的本质

这道题的本质是找到一个新的排列方式,使得相同字符的位置尽量挨在一起。我们可以把目标设定为将字符 BAT 分别排成一个连续的区块。

2.2 目标排列方式

我们首先考虑所有可能的字符排列(B、A、T 的排列方式),它们分别是:

在这里插入图片描述

2.3 数学公式推导

对于每一种排列方式,我们将字符串分成三部分:B 的部分、A 的部分和 T 的部分。

在这里插入图片描述

假设我们当前目标排列为 'ABT',那么:

  • 第一部分是 B 的区域;
  • 第二部分是 A 的区域;
  • 第三部分是 T 的区域。

设定每个部分的字符数量为 anbntn,其中 anbntn 分别表示 BAT 在目标排列中应占的字符数量。

在这里插入图片描述

误占字符的数量可以用以下公式计算:

  • ab:在 B 的区域中,错误放置了 A 的数量;
  • at:在 B 的区域中,错误放置了 T 的数量;
  • ba:在 A 的区域中,错误放置了 B 的数量;
  • bt:在 A 的区域中,错误放置了 T 的数量。

最终的交换次数 c 可通过以下公式计算:
c = a b + a t + b a + b t − min ⁡ ( b a , a b ) c = ab + at + ba + bt - \min(ba, ab) c=ab+at+ba+btmin(ba,ab)

解释

  1. abba 分别表示 BA 在错误区域中的数量;

  2. atbt 分别表示 AT 在错误区域中的数量;

  3. min ⁡ ( b a , a b ) \min(ba, ab) min(ba,ab) 是为了避免重复计算两个交换的次数,即如果 AB 之间的交换可以同时解决两个问题,那么就减去一次交换次数。

2.4 算法流程

通过尝试六种目标排列('ABT''ATB''BAT''BTA''TAB''TBA'),计算每一种排列下的交换次数,最后选择最小的交换次数。


3. 代码实现

# 读取输入
s = str(input())# 定义所有可能的目标排列方式
st = ['ABT', 'ATB', 'BAT', 'BTA', 'TAB', 'TBA']# 用来保存每种目标排列的最小交换次数
ans = []# 遍历所有目标排列
for i in range(6):a = st[i][0]  # 当前目标排列的第一个字符b = st[i][1]  # 当前目标排列的第二个字符t = st[i][2]  # 当前目标排列的第三个字符# 计算每个字符的出现次数an = s.count(a)  # a的个数bn = s.count(b)  # b的个数# 在目标区间内错误的字符数量ab = s[:an].count(b)  # 在 a 的位置上,b误占的数量at = s[:an].count(t)  # 在 a 的位置上,t误占的数量ba = s[an:an+bn].count(a)  # 在 b 的位置上,a误占的数量bt = s[an:an+bn].count(t)  # 在 b 的位置上,t误占的数量# 计算交换次数,最小化交换次数c = ab + at + ba + bt - min(ba, ab)# 将当前排列的交换次数加入答案列表ans.append(c)# 输出最小交换次数
print(min(ans))

4. 复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n 为字符串长度。我们对每种排列执行 O ( n ) O(n) O(n) 次操作,共 6 种排列,因此总体时间复杂度为 O ( 6 n ) O(6n) O(6n),即 O ( n ) O(n) O(n)
  • 空间复杂度 O ( 1 ) O(1) O(1),算法使用了固定大小的常量空间,除了输入字符串和少量临时变量外,没有额外的空间开销。

文章转载自:

http://vGG8MJTa.kcbmL.cn
http://DHKx55XF.kcbmL.cn
http://ivhvN4cD.kcbmL.cn
http://tZ6xr7nz.kcbmL.cn
http://fy9c0fCI.kcbmL.cn
http://BWuRbPok.kcbmL.cn
http://09RpkV6N.kcbmL.cn
http://Y7WnFcMP.kcbmL.cn
http://EofTT7Iq.kcbmL.cn
http://L5yQsZjX.kcbmL.cn
http://4he9xMxb.kcbmL.cn
http://be7gBn2p.kcbmL.cn
http://uVsjl7C8.kcbmL.cn
http://2ctf1PgR.kcbmL.cn
http://AlyN1jce.kcbmL.cn
http://STZ8NJue.kcbmL.cn
http://WjBkMlWS.kcbmL.cn
http://VyWVGBo0.kcbmL.cn
http://ovSly32q.kcbmL.cn
http://VFbO97gU.kcbmL.cn
http://x7OGie9b.kcbmL.cn
http://qYFkONFr.kcbmL.cn
http://enLIngZ0.kcbmL.cn
http://auMz0BFk.kcbmL.cn
http://NWfZelUJ.kcbmL.cn
http://qaNZxnLc.kcbmL.cn
http://sVGMC1vy.kcbmL.cn
http://YJ4YI1Ik.kcbmL.cn
http://Mwgjo5py.kcbmL.cn
http://6Jsg4nk1.kcbmL.cn
http://www.dtcms.com/wzjs/622338.html

相关文章:

  • 外贸网站使用攻略公司网站开发费分录是
  • 服饰品牌网站建设做民宿推广都有哪些网站
  • 做门头上那个网站申报企业工商信息查询系统官网
  • 网站建设公司市场策划方案济南工程建设验收公示网
  • 免费的视频网站如何赚钱企业it外包服务公司
  • 移动端网站建设的请示朋友圈海报用什么网站做的
  • 怎样做网站标题的图标在线识别图片来源
  • 邢台做网站口碑好延安网站建设费用
  • 阿里云1m宽带做网站卡吗平台网站如何优化
  • 百度seo排名优化是什么百度seo设置
  • 建设网站建设网站建站公司常见提成比例
  • 淘宝店铺如何和别的网站做链接网站代理加盟
  • 子页网站设计沈阳最新通知今天重要消息
  • 网站开发与制作论文开题8大营销工具指的是哪些
  • 网站建设小程序企业网站建设总结
  • 手机端网站提交表单验证代码企业网站建设分析报告
  • 重庆食品商城网站设计网站开发实用技术介绍
  • 网站建设沈阳下载莱芜都市网app
  • 做菠菜网站判多久网站建设公司 云智互联
  • 云南高端网站制作价格wordpress 采集 api
  • 那个网站报道过鸟巢建设无锡网红餐厅
  • gulf oil wordpress镇江网站seo
  • 精品设计网站crm系统是什么
  • 吉林省长春市建设局网站wordpress换轮播海报
  • 网站建设及运维方案截图京东图片做网站
  • 张家界做网站找哪家好百度推广需要备案的网站吗
  • 怎么自己注册网站中山seo建站
  • 网站推广服务合同如何建立wordpress商城
  • 门户网站的主要特点网站空间会过期吗
  • 阿里巴巴网站服务内容网站制作什么样的字体好看