[CF复盘] Codeforces Round 871 (Div. 4)20230506

news2024/11/15 10:53:55

[CF复盘] Codeforces Round 871 Div. 4 20230506

    • 总结
    • A. Love Story
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • B. Blank Space
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • C. Mr. Perfectly Fine
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • D. Gold Rush
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • E. The Lakes
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • F. Forever Winter
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • G. Hits Different
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • H. Don't Blame Me
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现

总结

  • 又是笨比的一周,只做出1题。
  • A 模拟
  • B DP
  • C 哈希表模拟
  • D 递归模拟。
  • E BFS最大连通块点权。
  • F 计数分类讨论。
  • G DP
  • H DP
    在这里插入图片描述
    在这里插入图片描述

A. Love Story

链接: A. Love Story

1. 题目描述

https://codeforces.com/contest/1829/problem/A
输入t组数据。
每组数据输入一个长为10的字符串。
计算有几个位置不对应"codeforces"

2. 思路分析

模拟

3. 代码实现

# Problem: A. Love Story
# Contest: Codeforces - Codeforces Round 871 (Div. 4)
# URL: https://codeforces.com/contest/1829/problem/A
# Memory Limit: 256 MB
# Time Limit: 1000 ms

import sys

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')
# print = lambda d: sys.stdout.write(str(d) + "\n")  # 打开可以快写,但是无法使用print(*ans,sep=' ')这种语法

MOD = 10 ** 9 + 7
PROBLEM = """https://codeforces.com/contest/1829/problem/A
输入t组数据。
每组数据输入一个长为10的字符串。
计算有几个位置不对应"codeforces"
"""


#       ms
def solve():
    s, = RS()
    p = 'codeforces'
    ans = 0
    for a, b in zip(p, s):
        if a != b:
            ans += 1
    print(ans)


if __name__ == '__main__':
    t, = RI()
    for _ in range(t):
        solve()

B. Blank Space

链接: B. Blank Space

1. 题目描述

https://codeforces.com/contest/1829/problem/B
输入t组数据。
每组数据输入n和长为n的数组a,0<=a[i]<=1。
找到最长的连续0

2. 思路分析

3. 代码实现

def solve():
    n, = RI()
    a = RILST()
    f = [0] * n
    if a[0] == 0:
        f[0] = 1
    for i in range(1, n):
        if a[i] == 0:
            f[i] = f[i - 1] + 1
    print(max(f))

C. Mr. Perfectly Fine

链接: C. Mr. Perfectly Fine

1. 题目描述

https://codeforces.com/contest/1829/problem/C
输入t组数据。每组数据:
输入n。
接下来n行输入m和一个长为2的01串,代表阅读这本书需要m分钟,01串上的1代表给这个技能。
输入最少要几分钟可以获得2个不同技能。

2. 思路分析

由于只有01,一共4种情况,直接每种情况求最小即可

3. 代码实现

def solve():
    n, = RI()
    c = defaultdict(lambda: inf)
    for _ in range(n):
        m, s = RS()
        m = int(m)
        c[s] = min(c[s], m)
    ans = min(c['11'], c['01'] + c['10'])
    if ans < inf:
        return print(ans)
    print(-1)

D. Gold Rush

链接: D. Gold Rush

1. 题目描述

https://codeforces.com/contest/1829/problem/D
输入t表示t组数据,每组数据:
输入n,m。n表示你有初始n个金块堆成一堆。
每次操作你需要选一堆金块,分成两堆数量分别是x,y。满足x=2*y。
请问是否可以通过任意次操作得到一堆金块数量是m。

2. 思路分析

只有3的倍数才能继续操作,直接用dfs模拟,不需要记忆化

3. 代码实现

def solve():
    n, m = RI()
    if m == n:
        return print('YES')

    # @lru_cache(None)  # 其实不需要记忆化
    def ok(x):
        if x == m:
            return True
        if x % 3 == 0:
            return ok(x // 3) or ok(x // 3 * 2)
        return False

    if ok(n):
        print('YES')
    else:
        print('NO')

E. The Lakes

链接: E. The Lakes

1. 题目描述

输入t组数据,每组数据:
输入n,m。
接下来输入n行,每行输入m个数,表示n×m的网格图g。
g[i][j]代表这个位置有深度为g[i][j]的水坑。水坑可以和上下左右四个相邻水坑相连。
问最大的一个连通坑的水体积。。

2. 思路分析

最大连通块点权

3. 代码实现

def solve():
    m, n = RI()
    g = []
    for _ in range(m):
        g.append(RILST())

    def inside(x, y):
        return 0 <= x < m and 0 <= y < n

    def bfs(x, y):
        s = g[x][y]
        if not s:
            return 0
        g[x][y] = 0
        q = deque([(x, y)])
        while q:
            x, y = q.popleft()
            for dx, dy in DIRS:
                a, b = x + dx, y + dy
                if inside(a, b) and g[a][b]:
                    s += g[a][b]
                    g[a][b] = 0
                    q.append((a, b))
        return s

    print(max(bfs(i, j) for i in range(m) for j in range(n)))

F. Forever Winter

链接: F. Forever Winter

1. 题目描述

输入t代表t组数据,每组数据:
输入n,m代表图的点数和边数。
接下来输入m行代表边。
已知输入的图是雪花图,其中雪花图的定义是:
中间一个点有x条边,连接x个跳板点;对于每个跳板点,连接y条新边,y个新点。(x,y>1)
求输入图形的x和y
(建议去网站里看图)

在这里插入图片描述

2. 思路分析

记录每个点的度,只有最外层的点可以是1,中间点和跳板点的度可以相同,也可以不同。那么度只有2种或者3种。
若是3种,则中间点的度只出现1次。
若是2种,则中间点的度应该大。因为跳板点除了y还多连了一个中间点

3. 代码实现

def solve():
    n, m = RI()
    degree = [0] * n
    for _ in range(m):
        u, v = RI()
        u -= 1
        v -= 1
        degree[u] += 1
        degree[v] += 1
    cnt = Counter(degree)
    # print(cnt)
    s = sorted([(k, v) for k, v in cnt.items()])
    if len(s) == 3:
        x, y = s[1][0], s[2][0]
        if s[1][1] == 1:
            x, y = y, x
        x -= 1
        print(y, x)
    else:
        x = y = s[1][0]
        x -= 1
        print(y, x)

G. Hits Different

链接: G. Hits Different

1. 题目描述

输入t组数据,每组数据:
输入一个n,代表击中的编号。
一些罐头按金字塔图(去看图)摆放:
第一行1个,第二行2个..编号按这个顺序从1开始递增,每个罐头的价值是编号的平方
你抛掷一个小球,仅会击中一个编号,叠在这个罐头以上的罐头都会摔落,问摔落的总价值

在这里插入图片描述

2. 思路分析

用dp预处理,然后查表。
  • 首先按二维建图。
  • f[i][j]为第i行第j个罐头的摔落值。
  • 发现每个罐头的摔落值等于自己加上前一排的右侧值和左侧那一竖排。
  • 那么令g[i][j]等于每个罐头的竖排求和,则可以递推。
  • 由于是按编号查询的,因此构造一个ans下标等于编号。

3. 代码实现

NN = 2023
# a = [[0]*2023 for _ in range(NN)]
f = [[0] * 2023 for _ in range(NN)]
g = [[0] * 2023 for _ in range(NN)]
ans = [0]
x = 1
for i in range(NN):
    for j in range(i + 1):
        # a[i][j] = x*x
        f[i][j] = x * x
        g[i][j] = x * x
        if i:
            f[i][j] += f[i - 1][j]
            if j:
                f[i][j] += g[i - 1][j - 1]
                g[i][j] += g[i - 1][j - 1]
        x += 1
        ans.append(f[i][j])


#       ms
def solve():
    n, = RI()
    print(ans[n])


if __name__ == '__main__':
    t, = RI()
    for _ in range(t):
        solve()

H. Don’t Blame Me

链接: H. Don’t Blame Me

1. 题目描述

输入t组数据,每组数据
输入n,k和一个长度为n的数据a。(0<=a[i]<=63)
问a中有多少个子序列,他们的位于结果里,有k个1。

2. 思路分析

看起来可以背包,但是查表法有些麻烦,由于a[i]范围64,可以刷表法,直接尝试所有转移。

3. 代码实现

def solve():
    n, k = RI()
    a = RILST()
    f = [0] * 64

    for v in a:
        g = f[:]
        f[v] += 1
        for i, x in enumerate(g):
            f[v & i] += x
            f[v & i] %= MOD
    ans = 0
    for i, v in enumerate(f):
        if bin(i).count('1') == k:
            ans = (ans + v) % MOD

    print(ans % MOD)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UNeXt:基于 MLP 的快速医学图像分割网络

UNeXt是约翰霍普金斯大学在2022年发布的论文。它在早期阶段使用卷积&#xff0c;在潜在空间阶段使用 MLP。通过一个标记化的 MLP 块来标记和投影卷积特征&#xff0c;并使用 MLP 对表示进行建模。对输入通道进行移位&#xff0c;可以专注于学习局部依赖性。 UNeXt 基本架构 U…

考研数学高数1-1综合测试-函数及其性质

今天听完强化课之后去做学习包的题&#xff0c;发现没带平板&#xff0c;如果写到纸上&#xff0c;塞到书里又不知道去哪了&#xff0c;所以索性就拿Latex写了&#xff0c;虽然有一点麻烦&#xff0c;但是好在数量不多&#xff0c;就这么写吧。 都是我自己写的过程&#xff0c;…

第三十八章 Unity GUI系统(下)

上一章节我们将了UI的锚点&#xff0c;关于锚点我们只讲了一半&#xff0c;因为锚点并不只是一个点&#xff0c;它还可以是一个矩形。 我们可以将锚点拆开&#xff08;鼠标选中后拖动&#xff09;&#xff0c;也就是将“四瓣雪花”拆成“四瓣”。那么此时锚点就成为一个矩形。我…

00-docker篇: linux系统安装docker操作 (最实用的操作)

目录 1. docker 简介 -> 简易理解: -> docker是否有自己仓库呢 -> docker 是靠什么运行呢 -> 简单说点docker优点 2. linux安装docker ps: 如果是新服务器 请直接看2. 3 -> 2.1: 查看内核版本: -> 2.2 如果有残留docker, 删除指令 -> 2.3 yu…

2023年全国职业院校技能大赛网络建设与运维-网络运维部分

全国职业院校技能大赛 网络建设与运维 五、网络运维 某单位网络拓扑架构如下&#xff0c;交换机连接两台服务器&#xff0c;其中Server1服务器是数字取证服务器&#xff0c;Server2服务器是应急响应服务器&#xff0c;通过交换设备相连&#xff0c;通过路由设备连接到安全设…

Portraiture4最新版滤镜P图一键磨皮插件

今天coco玛奇朵给大家带来了一款ps磨皮插件&#xff0c;超级简单好用。Portraiture 滤镜是一款 Photoshop&#xff0c;Lightroom 和 Aperture 插件&#xff0c;DobeLighttroom 的 Portraiture 消除了选择性掩蔽和逐像素处理的繁琐的手工劳动&#xff0c;以帮助您在肖像修整方面…

如何使用 ChatGPT 来快速编写产品需求文档(PRD)

PRD 生成 ChatGPT 即了解具体的编程知识&#xff0c;也了解编程之前的需求设计过程。因此产品经理也可以使用 ChatGPT 来快速编写PRD(产品需求文档, production requirement documentation)。 根据需求编写 PRD 首先&#xff0c;我们可以尝试把需求交给 ChatGPT&#xff0c;…

模型如何压缩?使用轻量化的模型压缩技术剪枝(pruning)

深度学习模型参数太多&#xff0c;本地服务器部署没有问题&#xff0c;但是如果部署到移动端、边缘端&#xff0c;像手机、树莓派等&#xff0c;它们的性能不能满足&#xff0c;所以我们要压缩模型大小&#xff0c;让他们可以部署到边缘端 模型压缩&#xff1a;使用轻量化的模型…

Redis 布隆过滤器总结

Redis 布隆过滤器总结 适用场景 大数据判断是否存在来实现去重&#xff1a;这就可以实现出上述的去重功能&#xff0c;如果你的服务器内存足够大的话&#xff0c;那么使用 HashMap 可能是一个不错的解决方案&#xff0c;理论上时间复杂度可以达到 O(1) 的级别&#xff0c;但是…

Flutter 开发的那些小细节

Flutter 创建应用的小注意 包名 每当创建一个新的 Flutter 应用时&#xff0c;一些 Flutter IDE 插件会请你输入一个类似 com.example 的包名&#xff0c;包名&#xff08;在 iOS 里叫 Bundle ID&#xff09;一般都是公司域名的反写。如果你的应用打算上架商店&#xff0c;建…

NetApp 7-mode下Autosupport日志的收集

前面介绍过NetApp Cluster mode下autosupport日志的收集方法&#xff0c;最近遇到很多7-mode下客户扔出一个有故障指示灯的照片&#xff0c;然后让你判断问题的case。NetApp没有一个命令能很清晰的把所有的和硬件有关的问题列出来的命令。客户随之就说&#xff0c;要不输入一条…

【操作系统OS】学习笔记第三章 内存管理【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记&#xff0c;仅进行交流分享。 特此鸣谢李治军老师&#xff0c;操作系统的神作&#xff01; 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0…

《机器学习算法竞赛实战》-chapter6模型融合

模型融合 模型融合常常是竞赛取得胜利的关键&#xff01; 具有差异性的模型融合往往能给结果带来很大的提升。虽然并不是每次使用模型融合都能起到很大的作用&#xff0c;但是就平常的竞赛经验而言&#xff0c;尤其是在最终成绩相差不大的情况下&#xff0c;模型融合的方法往往…

法规标准-GB/T 39265标准解读(2020版)

GB/T 39265是做什么的&#xff1f; GB/T 39265全名为道路车辆 盲区检测系统性能要求及试验方法&#xff0c;其中主要是对BSD系统的性能要求及测试步骤进行了介绍。本文仅解读M1、N1类车辆相关内容。 一般要求 系统开启与关闭 1.BSD系统应具备手动开启和关闭的功能 2.手动关…

巧用 exports 和 typeVersions 提升 npm 包用户使用体验

默认导出 对于开发一个 JavaScript 三方库供外部使用而言&#xff0c;package.json是其中不可缺少的一部分 一般而言&#xff0c;对于库开发者来说&#xff0c;我们会在package.json中指定我们的导出入口。一般而言会涉及两个字段main和export&#xff0c;它们会涉及到当前模…

开关电源基础03:正激和反激开关电源拓扑(2)-半桥和全桥拓扑

说在开头&#xff1a;关于薛定谔的波动方程&#xff08;3&#xff09; 波动方程在矩阵派的内部也大受欢迎&#xff0c;首先是海森堡的老师索末菲&#xff0c;然后是建立矩阵力学的核心人物之一的另一位老师&#xff1a;马克思.玻恩。玻恩在薛定谔方程刚出来时就赞扬了他的成就…

宕机了?!DolphinScheduler 高可用和 Failover 机制关键时刻保命

点击蓝字 关注我们 高可用性是 Apache DolphinScheduler 的特性之一。它通过冗余来避免单点问题&#xff0c;所有组件天然支持横向扩容&#xff1b;但仅仅保证了冗余还不够&#xff0c;当系统中有节点宕机时&#xff0c;还需要有故障转移机制能够自动将宕机节点正在处理的工作转…

【react 全家桶】高级指引(上)

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 12 【react高级指引&#xff08;上&…

I.MX6Q-SDB开发板移植ubuntu

I.MX6Q-SDB开发板移植ubuntu 0.前言一、准备工作二、ubuntu移植1.下载ubuntu发布的根文件系统2.根文件系统的简单修改3.板卡适配设置4.打包根文件系统 三、烧写镜像1.dd命令2.uuu工具3.mfgtool工具4.i.mx6q-sdb的拨码设置&#xff1a; 四、大无语事件 0.前言 这两天收拾杂货堆&…

密码学【java】初探究加密方式之数字签名

文章目录 前言1 数字签名简介2 基本原理3 数字证书4 网页加密5 edge的网站连接图标6 代码实现7 keytool工具使用7.1 常用命令&#xff1a;7.2 生成私钥公钥[未实践成功]7.3 导出公钥 前言 有关keytool的使用部分&#xff0c;未实现&#xff0c;先记录下来&#xff01;&#xf…