文章目录
- Uzi 的真身
- D 基站建设
Uzi 的真身
- 分析:本来想使用动态规划算法的,但是由于数据计算过大,导致超时
正确的思想:直接线性遍历字符串,分别统计字符“j”的个数,后面对于统计字符“z”和字符“h” 的个数的时候就要讲究技巧了,z = z+j , h = h+z
n = int(input())str1 = list(input())
lenstr1 = len(str1)j = 0
z = 0
h = 0for i in range(lenstr1):if str1[i] == 'j':j+=1if str1[i] == 'z':z = z+jif str1[i] == 'h':h = z+hh = h % 998244353
print(h)
D 基站建设
- 对于这道题,开始的时候,想使用前缀和与差分进行计算重叠的问题,但是会发现对于相邻的两个整数无法正确区分是否要增加基站
正确的思路:转换成活动安排问题,采用元组存储(x-b,x+b)结果,使用lambda 表达式进行排序,通过活动安排问题进行安排
n = int(input())store = list()
# 这就是一个活动安排问题,找出相容的活动的数目for i in range(n):x,b = map(int,input().split())store.append((x-b,x+b))store.sort(key = lambda x:x[1])count = 0
end = 0
for s,e in store:if s>end:count+=1end = e
if count==0:print(1)else:print(count)