1 Star 1 Fork 0

bensonrachel/Atcoder_algorithm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
TPM(step3)C. Che city(CF).py 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
# -*- coding: utf-8 -*-
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/8/27
# @File : TPM(step3)C. Che city(CF).py
def TPM():
l = 0
res = 0
for r in range(n):
while (rate[r] - rate[l] > s):
l += 1
res += l
return res
"""
本题中的数组是有序的!
代码非常简单,也是按照Step2的A题代码框架来修改。
不过注意问题的性质发生了改变:
本题是求数组中最大值和最小值的差值一定要大于r的区间个数
又因为数组是连续的,所以最大值取区间的最后一个和最小值取区间的第一个即可:rate[r] - rate[l]
而且正因为数组有序,所以枚举r,维护一个最小的l的时候,l前面的(不包括l)都是可以的区间左端点,所以需要累加l。
注意:是符合条件就进入while循环,l前进到不符合就退出来,说明此时的l的前面全部区间左端点都是符合条件的,可以累加,这样就不会算重复的区间个数。
"""
if __name__ == "__main__":
n, s = map(int, input().split())
rate = [int(i) for i in input().split()]
print(TPM())
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/bensonrachel/atcoder_algorithm.git
git@gitee.com:bensonrachel/atcoder_algorithm.git
bensonrachel
atcoder_algorithm
Atcoder_algorithm
master

搜索帮助