Codeforces Round #376A (div2)

不念不忘少年蓝@ 2022-06-16 05:23 290阅读 0赞

Night at the Museum

题意:

有一个转盘,26个英文字母均匀分布在转盘边缘,转针初始位置在字母a,每次只能转动到相邻的字母,然后输入一个由26个字母组成的字符串(最长100),不复位地依次转动到相应的字母位置,问:一共需要转多少次?编程实现。

Input:

  输入一个字符串,最长100,由26个英文字母组成。

Output:

  输出需要转动的次数(整数)。

833309-20161024142237187-626615674.png

解题思想:

由于一圈字母中“..za..”段是不连续的,所以需要分情况讨论,我是这么分的:

以转针所指字母pointer和圆心连线为轴,轴右侧(即),除了转针指向‘a’时,其它时刻轴两侧肯定有一侧字母连续 另一侧字母无法连续(包含”za”串) 。

轴左右指的是将轴竖直放置,转针一头在上,此时的左右侧 。

不难看出pointer以‘n’为界限,小于‘n’时不连续段在轴左侧,大于‘n’时不连续段在轴右侧。如下图:

833309-20161024141821140-1736305144.png

最后代码:

ContractedBlock.gif C++ Code

结果测试:

833309-20161024142145046-2037125656.png

发表评论

表情:
评论列表 (有 0 条评论,290人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Codeforces Round #663 (Div. 2) A

    [题目链接][Link 1] 这是一道简单题,我当时构造了一种剩余最大,剩余最小,轮番输出的方式,来实现了题目中的要求。 实际上好像还有更简单的方式,直接从大到小输出,或者

    相关 Codeforces Round #556 (Div. 2) A

    题面很简单,思路就是简单贪心,si数组是贮存购买数组,bi数组是贮存出售数组,题面是给你r的货币,让你通过出售和购买来获取最大价值,第一种算法是通过找出bi数组最大值,和si数

    相关 Codeforces Round #556 (Div. 2) A

    题面很简单,思路就是简单贪心,si数组是贮存购买数组,bi数组是贮存出售数组,题面是给你r的货币,让你通过出售和购买来获取最大价值,第一种算法是通过找出bi数组最大值,和si数