Codeforces Round #905(Div.3)

news/2024/7/3 3:16:29

A. Morning

题目

给定4位数字码,每位数字取值0-9。排列顺序如下: 

 初始光标指向1,每次可执行其中一个操作

        1、输出光标所指数字

        2、移动光标到相邻位置上。如3可移动到2或4,其中1只能移动到2,0只能移动到9。

问,需要进行多少次操作,能够得到给定的4位数字码。

输入

第一行为测试样例数t,取值范围1\leq t\leq 10^{4}

接下来t行,每行包含一个4位数字码

输出

输出t行,每行位得到此数字码需要的操作次数。

解析

 依次遍历4位数字,记录光标移动到当前数字的移动次数,累加即为结果。因为输出数字也是一次操作,故最后需要加上4。

代码


T = int(input().strip())

for t in range(T):
    n = input().strip()

    cur = 1
    res = 0
    for i in n:
        i = int(i)
        if i == 0:
            i = 10
        res = res + abs(i - cur)
        cur = i

    print(res+4)

B. Chemistry

题目

给定长度为n的字符串s,判断是否可以通过删除任意k的字符后,使s成为回文字符串。(删除k个字符后的s,可以任意排序)

输入

首行测试样例数t,1\leq t\leq 10^{4}.

每组数据第一行输入n和k,由空格隔开,0\leq k\leq n\leq 10^{5}.

第二行为长度为n的字符串s

输出

输出判断结果“YES”或“NO”,不区分大小写。

解析

 rank的时候没有注意剩余字符可以任意排序,卡了一个多小时,这就是菜吧。回文字符串,从前往后和从后往前相同,故回文字符串中出现的字符,其数量为奇数的个数不能超过1。(只有长度为奇数的回文字符,才有能出现某个字符出现次数为奇数)。故只需统计s中字符出现奇数次的个数,判断其是否小于等于k+1即可。

代码


T = int(input().strip())

for t in range(T):
    n, k = map(int, input().strip().split())
    s = input().strip()
    l = [0] * 26
    for c in s:
        l[ord(c) - ord('a')] += 1

    cnt = 0
    for i in l:
        if i % 2:
            cnt += 1
    if cnt - k <= 1:
        print("YES")
    else:
        print("NO")

C. Raspberries

题目

给定长度为n的数字序列,每个数字k取值2\leq k\leq 5。每次操作,可选择序列中任一数字a,将其加1。

问,最少需要多少次操作可使\prod_{i=1}^{i=n}a_{i}能够被k整除。

输入

首行测试样例数t,其中1\leq t\leq 10^{4}

每组第一行输入n和k,空格隔开。2\leq n\leq 10^{5}, 2 \leq k \leq 5.

第二行长度为n的数字序列,一次用空格隔开

输出

t行最小操作次数

解析

k的取值只有2,3,4,5。当序列中任一一个数字能够被k整除时,序列的乘积便能够被k整除。故对于2,3,5素数,最优策略是将单个数字增加到能被k整除。

对4而言,有两种策略,一种同上。另一种,将两个数字增加到偶数,序列乘积便可被4整除。如果序列中偶数个数为cnt,则第二种策略的答案为max(0, 2-cnt)。从两种策略中选择最小值即可。

代码


T = int(input().strip())

for t in range(T):
    n, k = map(int, input().strip().split())
    b = k
    a = list(map(int, input().strip().split()))
    a.sort()

    res = 6
    even = 0
    for i in a:
        if i % 2 == 0:
            even += 1
        while i > k:
            k += b
        dis = k - i
        if dis < res:
            res = dis

    if b == 4:
        if n >= 2:
            res = min(res, max(0, 2-even))

    print(res)
    

第一次做CF,挑了个难度最低的,就做出来两个题,C还提交错了两次(扣了100)。总的来看div3前面题目的难度并不大,首次做全英文的题目会忽略掉一些关键条件。C的错误也是因为循环中变量命名习惯不好,慢慢纠正吧,看下次拿几分。

rank分多了400,成功从CF晋级为CF,o(╥﹏╥)o。

(另,解析里图片部分为出题人解答) 


http://lihuaxi.xjx100.cn/news/1710086.html

相关文章

日志logback详解

该篇博客是我参考了很多博客总结出来的&#xff0c;内容很多&#xff0c;你能看完不睡着算你厉害&#xff01; 一、日志框架发展史 二、日志规范 三、日志级别 四、Logback 4.1 Maven引入 4.2 logback-spring.xml是在哪里加载的&#xff1f; 4.3 logback.xml和logback-s…

[资源推荐]看到一篇关于agent的好文章

链接在此&#xff1a;Chat 向左&#xff0c;Agent 向右 - 李博杰的文章 - 知乎 https://zhuanlan.zhihu.com/p/662704254当时在电脑知乎上看了一半&#xff0c;打开手机微信公众号&#xff0c;就给我推了同样的&#xff0c;这推荐算法&#x1f625;今年关于大模型的想法经历了几…

永磁无刷直流(无框)力矩电机brushless DC motor (BLDCM)

(无框)力矩电机&#xff0c;全称应该为永磁无刷直流(无框)力矩电机&#xff0c;其显著的特征是&#xff1a; 较大的径长比&#xff08;diameter-to-length ratio&#xff09;较多数目的磁极&#xff08;magnet poles&#xff09; 无框架电机是传统电机中用于产生扭矩和速度的…

Java并发面试题:(八)AQS原理和Semaphore、CountdownLatch、CyclicBarrier类

什么是AQS 通过维护一个共享资源状态&#xff08; Volatile Int State &#xff09;和一个先进先出&#xff08; FIFO &#xff09;的线程等待队列来实现一个多线程访问共享资源的同步框架。 AQS队列同步器&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff0c;是…

浅谈RabbitMQ的延迟队列

Part 01、 延迟队列是什么 延迟队列代表了一种强大的消息传递机制&#xff0c;允许我们在将消息发送至RabbitMQ时&#xff0c;规定它们只能在未来某个预定的时间点被消费。这种特殊类型的消息被简称为"延迟消息"。 以RabbitMQ为例&#xff0c;它允许我们通过延迟…

【matplotlib】matplotlib的颜色表

【matplotlib】matplotlib的颜色表 文章目录 【matplotlib】matplotlib的颜色表1. 颜色表Reference 1. 颜色表 在使用matplotlib库进行绘图的时候&#xff0c;只需要指定关键字coloryour_color就能修改绘制的颜色了&#xff0c;具体的颜色表如下。 Reference https://finthon…

Python使用正则表达式去除base64编码前缀

Python使用正则表达式去除base64编码前缀 当我们做开发时&#xff0c;前端有可能会传给我我们base64编码字符串&#xff0c;如果我们想把它转成文件&#xff0c;需要去除前缀&#xff0c;代码如下&#xff1a; import rebase64_str "data:zip/png;base64,AAAAAAAAAAAAB…

SpringBoot_minio sdk使用自签名https证书错误处理

minio sdk使用自签名https证书错误处理 1.问题描述1.1 报错日志1.2 maven 依赖配置1.3 当前spring MinioClient配置 2.问题分析3.问题解决3.1 使用受信任的证书3.2 忽略证书验证3.2.1 minio客户端3.2.2 minio sdk 忽略证书验证3.2.2.1 拓展: 补充minioclient请求日志 4. 问题总…