当前位置: 首页 > news >正文

【蓝桥杯集训·每日一题2025】 AcWing 5539. 牛奶交换 python



AcWing 5539. 牛奶交换

Week 3
3月6日

题目描述

农夫约翰的 N N N 头奶牛排成一圈,使得对于 1 , 2 , … , N − 1 1,2,…,N−1 1,2,,N1 中的每个 i i i,奶牛 i i i 右边的奶牛是奶牛 i + 1 i+1 i+1,而奶牛 N N N 右边的奶牛是奶牛 1 1 1

i i i 头奶牛有一个容量为整数 a _ i a\_i a_i 升的桶。

所有桶初始时都装满了牛奶。

每一分钟,奶牛都会根据一个字符串 s 1 s 2 … s N s_1s_2…s_N s1s2sN 传递牛奶,该字符串仅由字符 LR 组成。

当第 i i i 头奶牛至少有 1 1 1 升牛奶时,如果 s i = s_i= si=L,她会将 1 1 1 升牛奶传递给她左边的奶牛,如果 s i = s_i= si=R,她会将 1 1 1 升牛奶传递给右边的奶牛。

所有交换同时发生(即,如果一头奶牛的桶是满的,送出 1 1 1 升牛奶的同时,也收到 1 1 1 升牛奶,则她的牛奶量保持不变)。

如果此时一头奶牛的牛奶量超过了桶的容量 a i a_i ai,则多余的牛奶会损失。

农夫约翰想要知道:经过 M M M 分钟后,所有奶牛总共还余下多少牛奶?

输入格式

输入的第一行包含 N N N M M M

第二行包含一个字符串 s 1 s 2 … s N s_1s_2…s_N s1s2sN,仅由字符 LR 组成,表示每头奶牛传递牛奶的方向。

第三行包含整数 a 1 , a 2 , … , a N a_1,a_2,…,a_N a1,a2,,aN,为每个桶的容量。

输出格式

输出一个整数,为 M M M 分钟后所有奶牛总共余下的牛奶量。

数据范围

1 ≤ N ≤ 2 × 1 0 5 1 \le N \le 2 \times 10^5 1N2×105,
1 ≤ M ≤ 1 0 9 1 \le M \le 10^9 1M109,
1 ≤ a i ≤ 1 0 9 1 \le a_i \le 10^9 1ai109

输入样例1:
3 1
RRL
1 1 1
输出样例1:
2
样例1解释

奶牛 2 2 2 3 3 3 互相传递一升牛奶,因此她们的牛奶得以保留。

当奶牛 1 1 1 将牛奶传递给奶牛 2 2 2 时,奶牛 2 2 2 的桶会溢出,从而一分钟后损失了一升牛奶。

输入样例2:
5 20
LLLLL
3 3 2 3 3
输出样例2:
14
样例2解释

每头奶牛都将一升牛奶传递给左边的奶牛,并从右边的奶牛那里获得一升牛奶,因此无论经过多长时间所有牛奶都会被保留下来。

输入样例3:
9 5
RRRLRRLLR
5 8 4 9 3 4 9 5 4
输出样例3:
38
样例3解释

初始时,共有 51 51 51 升牛奶。

5 5 5 分钟后,奶牛 3 3 3 6 6 6 7 7 7 将分别损失 5 5 5 3 3 3 5 5 5 升牛奶。

因此,总共还剩下 38 38 38 升牛奶。


模拟


AC _code

n, m = map(int, input().split())  
s = input()  
s += s  
a = list(map(int, input().split()))  
ans = sum(a)  
a += a  
# 找到第一个不连续的位置  
k = 0  
while k < n and s[k] == s[k + 1]:  
    k += 1  
if k < n:  
    i = k + 1  
    while i <= n:  
        res = 0  
        j = i  
        while j <= k + n and s[j] == s[i]:  
            res += a[j]  
            j += 1  
        if s[i] == 'R':  
            res -= a[j - 1]  
        else:  
            res -= a[i]  
        ans -= min(m, res)  
        i = j  
print(ans)

END
如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢

相关文章:

  • C语言番外篇(4)------------------>VS环境下源码的隐藏
  • Dify部署踩坑指南(Windows+Mac)
  • Spring Boot 项目中 Redis 常见问题及解决方案
  • 常见的限流算法有哪些?
  • 社区智慧养老标准规范全解析
  • Java停车平台高并发抢锁技术方案设计 - 慧停宝开源停车管理平台
  • C语言番外篇(5)-------------->作用域与生命周期
  • 基于ANTLR4的大数据SQL编辑器解析引擎实践|得物技术
  • aws(学习笔记第三十一课) aws cdk深入学习(batch-arm64-instance-type)
  • 贪心算法一
  • python实现的生态模拟系统
  • 第5章:vuex
  • Linux部署java项目
  • NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)
  • 支持多数据源的 MyBatis-Plus 实现
  • C语言基础之【指针】(下)
  • Python的那些事第四十二篇:Python的无人机监控环境监测系统研究
  • macos查询pip默认镜像地址
  • 基于Hadoop的热门旅游景点推荐数据分析与可视化系统(基于Django大数据技术的热门旅游景点数据分析与可视化)
  • 抽象类与普通类的核心区别
  • 上海市政府党组赴全面从严治党警示教育基地参观学习,推进作风建设走深走实
  • 上海国际电影电视节 | 奔赴电影之城,开启光影新程
  • 三部门印发《2025年深入推进IPv6规模部署和应用工作要点》
  • 金融监管总局将研究出台专门的城市更新项目贷款管理办法:引导大力支持城中村的改造等
  • 王毅同丹麦外交大臣会谈,表示在格陵兰问题充分尊重丹麦主权和领土完整
  • 电子凭证会计数据标准推广至全国