首页 > 其他分享 >蓝桥杯 消除游戏

蓝桥杯 消除游戏

时间:2023-12-13 21:14:04浏览次数:31  
标签:pre nxt 游戏 pos append 蓝桥 vec __ 消除

题目位置
主要需要用到模拟链表。做法是先整体扫一遍,将要删除的位置存下来。
然后在删除这些位置的过程中,判断该位置的左右是否需要在下一轮删除,如果需要,就存下来。
这样循环,直到没有位置需要删除。细节看代码

N = int(1e6) + 10
pre = [i-1 for i in range(N)]
nxt = [i+1 for i in range(N)]
dead = [False for i in range(N)]
n, s, vec = 0, "", []

def delete(pos):
    pre[nxt[pos]], nxt[pre[pos]] = pre[pos], nxt[pos]
    dead[pos] = True

def prints():
    if nxt[0] > n: print('EMPTY')
    else:
        i = nxt[0]
        while i <= n:
            print(s[i], end='')
            i = nxt[i]
        print()

def check(pos):
    posl, posr = pre[pos], nxt[pos]
    if posl < 1 or posr > n: return
    if s[posl] != s[pos] and s[pos] == s[posr]: vec.append(posl); vec.append(pos)
    if s[posl] == s[pos] and s[pos] != s[posr]: vec.append(pos); vec.append(posr)

def main():
    global s, n
    s = input()
    n = len(s)
    s = '#' + s
    for i in range(1, n + 1): check(i)
    i = 0
    while i < len(vec):
        p = []
        while i < len(vec):
            if not dead[vec[i]]:
                delete(vec[i])
                if vec[i] > 1: p.append(pre[vec[i]])
                if vec[i] < n: p.append(nxt[vec[i]])
            i += 1
    
        for j in p:
            if not dead[j]:
                check(j)
    prints()

if __name__ == '__main__':
    main()

标签:pre,nxt,游戏,pos,append,蓝桥,vec,__,消除
From: https://www.cnblogs.com/BakaCirno/p/17899918.html

相关文章

  • 蓝桥杯 寻找整数
    题目扩展中国剩余定理,将所有同余方程合并为一个设有\(x\equivr_1(mod\m_1)\),\(x\equivr_2(mod\m_2)\),即\(x=m_1p+r_1=m_2q+r2\)则有\(m_1p-m_2q=r_2-r_1\),由扩展欧几里得算法,得:方程\(m_1p-m_2q=gcd(m_1,m_2)\)特解\(p',q'\)对于原方程:当\((r2-r1)\%gcd(m_1,m_......
  • Unity引擎2D游戏开发,创建人物动画
    给人物创建Animator动画组件在素材库新建Animation文件夹专门存动画相关的文件Animation文件夹中创建Player文件夹右击Player文件夹,创建AnimatorController将新建的AnimatorController赋予人物中Animator组件中的Controller选择Window,选择Animation,打开Animator窗......
  • Unity引擎2D游戏开发,解决空中无限跳跃以及黏墙问题
    一、解决空中无限跳跃解决空中无限跳跃的根本就是添加落地检测,即在地面上才能进行跳跃(二段跳功能以后再开发)在文件夹内新建PhysicsCheck物理检测脚本在里面开发人物物理检测相关功能添加isGround布尔值变量,接触地面则为1,空中则为0。以及两种检测变量:checkRadius检测半径......
  • Unity引擎2D游戏开发,C#实现人物跳跃
    一、Component内,实现变量参数分栏[Header("XXXX")]二、在新建的InputActions中添加跳跃绑定三、在2D刚体所绑定的C#代码中调用InputActions中新建的跳跃动作在unity中,跳跃动作相当于对2D刚体施加Y轴方向的力。因此,增加一个力数值的变量jumpForce。publicfloatjumpF......
  • python——小游戏(ball,bird)
      ball #-*-coding:utf-8-*-"""CreatedonWedDec1309:19:382023@author:kabuqinuo"""importsys#导入sys模块importpygame#导入pygame模块pygame.init()#初始化pygamesize=width,height=640,480#设置窗......
  • 【Python爬虫】爬虫框架Scrapy初使用_爬取4399游戏页面数据
    Scrapy简介Scrapy是一个用于爬取和提取数据的开源web抓取框架。它提供了一个强大的机制,让开发者可以轻松地创建和管理爬虫程序,以从网站上自动提取结构化的数据。以下是Scrapy的一些主要特点和优势:强大灵活的爬取能力:Scrapy具有高度可配置的请求处理和数据提取功能。它可以轻......
  • 第八届蓝桥杯赛题 分巧克力(用二分法实现)
    今日一道编程题  第八届蓝桥杯赛题中的分巧克力问题(用二分法实现)问题描述如下:儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是HixWi的方格组成的长方形。为了公平起见,小明需要从这N块巧克力中切出K块巧克力分给......
  • P8805 [蓝桥杯 2022 国 B] 机房
    原题链接前情提要题目不难看懂,即求a->b过程中的所有点的延迟和。显然可以暴力遍历一遍完成,但是时间复杂度太高了。改进算法想象这个图是由点和线组成的,把其中一个点提起来,这样就变成了一个树(n叉树),任意两点(a,b)间的延迟和等于a->lca->b,其中lca为ab两点的最近公共祖先这样一来,只......
  • Maya/ZBrush教程 次世代游戏模型《深掘奇遇》全流程制作案例分享
    《深掘奇遇》次世代游戏模型全流程制作案例教程”是一份详尽的指南,旨在揭示游戏开发领域中最先进的技术和实践。该教程覆盖了从概念设计到最终渲染的整个制作过程,深入探讨了模型建模、纹理映射、动画设计以及高级渲染技术等方面。通过这份教程,读者将获得深入了解游戏开发流程的机......
  • 耐心极限大挑战,整蛊小游戏之「禁止向上走」【玩转Web小游戏】
    故事是这样开始的很久很久以前,我关注的一个游戏博主,发了一个游戏视频。然后我就见识到了什么叫,「游戏叫你一步噶,你绝对走不到第二步」。这个带那么点整蛊的性质的脑洞游戏,瞬间引起了我浓厚的兴趣。需要玩家克服大脑常规套路的惯性,那岂不是游戏处处是惊喜。不过,游戏的本质还是在于趣......