[acwing周赛复盘] 第 88 场周赛20230128

news/2024/12/5 0:49:26/

[acwing周赛复盘] 第 88 场周赛20230128

    • 一、本周周赛总结
    • 二、 4800. 下一个
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、4801. 强连通图
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、4802. 金明的假期
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 在T2卡了半天,因为自己封的RS读入字符串方法要加个逗号,于是先去做了T3再回来做T2。
  • T1 暴力
  • T2 Floyd
  • T3 线性DP在这里插入图片描述在这里插入图片描述

二、 4800. 下一个

链接: 4800. 下一个

1. 题目描述

在这里插入图片描述

2. 思路分析

签到题,暴力找。

3. 代码实现

# Problem: 下一个
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4803/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
# ACW没有comb
# from math import sqrt, gcd, inf, comb
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')#       ms
def solve():n, = RI()n += 1while True:s = str(n)if len(s) == len(set(s)):return print(n)n += 1if __name__ == '__main__':solve()

三、4801. 强连通图

链接: 4801. 强连通图

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 求所有点到所有点都能连通/最短距离,第一时间先想floyd。
  • 看了下数据范围,n<=m<=20,最多400个点,n立方是可行的。因此给点编号,直接上floyd。
  • 一共z = n*m个点,二维数组dis[u][v] 代表点u到点v是否连通。
  • 然后枚举每个点作为跳板k,看看从u到k和从k到v是否连通,则连通uv。

  • 赛后发现,只要四周能互相到达,就等于全图能连通。
  • 因此只判断外围即可,即外围只有两种方案的字符串,顺时针或逆时针,直接判断即可。

3. 代码实现

# Problem: 强连通图
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4804/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
# ACW没有comb
# from math import sqrt, gcd, inf, comb
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')MOD = 10 ** 9 + 7#       ms
def solve():n, m = RI()a, = RS()b, = RS()# print(a,b)z = m * ndis = [[False] * z for _ in range(z)]for i in range(z):dis[i][i] = Truefor i, c in enumerate(a):if c == '>':for j in range(m - 1):u = i * m + jv = i * m + j + 1dis[u][v] = Trueelse:for j in range(m - 1):v = i * m + ju = i * m + j + 1dis[u][v] = Truefor j, c in enumerate(b):if c == 'v':for i in range(n - 1):u = i * m + jv = (i+1) * m + jdis[u][v] = Trueelse:for i in range(n - 1):v = i * m + ju = (i+1) * m + jdis[u][v] = Truefor k in range(z):for i in range(z):for j in range(z):if dis[i][k] and dis[k][j]:dis[i][j] = True# print(dis)for i in range(z):for j in range(z):if not dis[i][j]:return print('NO')print('YES')if __name__ == '__main__':solve()

四、4802. 金明的假期

链接: 4802. 金明的假期

1. 题目描述

在这里插入图片描述

2. 思路分析

蛮裸的线性DP。

  • 定义:令f[i][0/1/2]代表第i天, 小明选择休息/看书/健身时,最少休息次数。

  • 转移:显然,只有对应的房间开放,才能选择今天进行这个活动,并且从昨天其他房间转移。

    • 问题变成如何判断对应房间开放,硬if有点麻烦,这里用位运算。
    • a[i] & 1 == 1 代表图书馆开,可以看书。
      • f[i][1] = min(f[i - 1][0], f[i - 1][2])
    • a[i] & 2 == 2 代表健身房开,可以健身
      • f[i][2] = min(f[i - 1][0], f[i - 1][1])
    • 任意时间可以休息,f[i][0] = min(f[i-1])
  • 初始:显然第一天休息的话f[0] = 1;在第一天对应房间开方情况下,对应位置都是0.其他设置为inf。

  • 答案:min(f[-1])。注意f[-1][0]也可能是答案,因为最后一天可能什么都不开,只能休息。

  • 实现时可以滚动优化。(但这题没有空间问题,考试时没必要)

3. 代码实现

# Problem: 金明的假期
# Contest: AcWing
# URL: https://www.acwing.com/problem/content/4805/
# Memory Limit: 256 MB
# Time Limit: 1000 msimport sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
# ACW没有comb
# from math import sqrt, gcd, inf, comb
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')MOD = 10 ** 9 + 7#    4330   ms
def solve1():n, = RI()a = RILST()f = [[inf] * 3 for _ in range(n)]  # 0/1/2 休息  看书 健身f[0][0] = 1if a[0] & 1:f[0][1] = 0if a[0] & 2:f[0][2] = 0for i in range(1, n):v = a[i]f[i][0] = min(f[i - 1]) + 1if v & 1:f[i][1] = min(f[i - 1][0], f[i - 1][2])if v & 2:f[i][2] = min(f[i - 1][0], f[i - 1][1])print(min(f[-1]))#   4274     ms
def solve():n, = RI()a = RILST()y = z = inf  # 休息  看书 健身x = 0for v in a:x, y, z = min(x, y, z) + 1, min(x, z) if v & 1 else inf, min(x, y) if v & 2 else infprint(min(x, y, z))if __name__ == '__main__':solve()

六、参考链接


http://www.ppmy.cn/news/20295.html

相关文章

Python爬虫(2)-Selenium控制浏览器

Selenium中提供了不少的方法来操作浏览器 Selenium控制浏览器1.打开浏览器2.打开浏览器后可以控制浏览器前进和后退就使用3.浏览器刷新4.浏览器切换网页窗口5.关闭页面和退出浏览器6.设置窗口大小7.获取窗口位置8.最大化窗口9.最小化窗口11.无窗口运行10.全屏11.屏幕截图12.元素…

一名普通22届本科毕业生|前端程序员|22年年终总结

文章目录22年上半年&#xff1a;最后的学生时光隔离实习币基金迷茫困惑难受不要去想人生意义读书景点环境的力量再次隔离返校入职前的学习22年下半年&#xff1a;上班工作生活总结本来准备在22年年末写的&#xff0c;奈何那段时间工作太忙没抽出时间。现在是23年的1月27日&…

创建大量TCP连接时会受到什么因素的限制?

1.文件描述符资源 用户级限制 我们可以使用ulimit命令查看系统允许当前用户进程打开的文件数限制&#xff1a; ulimit -n 我们可以使用 ulimit -n 文件数 来修改不过这种设置是临时的&#xff0c;只在当前的session中有效。为永久修改用户级文件描述符数限制&#xff0c;可以…

网站如何进行整站优化?

如果要做优化或者选择性优化&#xff0c;一定要区分关键词优化和全站优化&#xff0c;米贸搜整理如下&#xff0c;希望可以帮助到你&#xff1a;一、全站优化的概念:1.一般认为&#xff0c;全站点优化是指通过SEO技术&#xff0c;使其网站成为搜索引擎中的权威站点。当达到效果…

【c语言进阶】动态内存管理知识大全(下)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏c语言学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励和…

小米万兆路由器里的Docker安装Alist

小米2022年12月份发布了万兆路由器&#xff0c;里面可以使用Docker。 今天尝试在小米的万兆路由器里安装Alist v3.9.2。 准备工作 请参考https://engchina.blog.csdn.net/article/details/128515422的准备工作。 创建存储 在第三方管理(SimpleDocker)&#xff0c;单击"…

TOGAF基础级L1试题答案及解析(三)

【单选题】101 下列哪个TOGAF组件的创建,使架构师设计架构解决边界信息流? A. 架构信息库 B. 企业连续 C. 综合信息基础架构模型 D. TOGAF技术参考模型 【参考解析】 无 【正确答案】:C. 综合信息基础架构模型

无穷小的比较——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是无穷小的比较&#xff0c;下面&#xff0c;就让我们一起进入高等数学的世界吧 回顾 定义 性质 定理 定理1&#xff1a; 定理2&#xff1a;等价无穷小替换定理 常用的等价无穷小 例题 小结 回顾 两个无穷小的商当然不一定还…