3347. 菊花链

摘要
Title: 3347. 菊花链
Tag: 队列、哈希表
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

3347. 菊花链

  • 题意

    每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 N 朵花(五颜六色的雏菊),编号为 1…N,排列成一行。
    花 i 有 pi 朵花瓣。
    作为一名崭露头角的摄影家,Bessie 决定给这些花拍些照片。
    具体地说,对于每一对满足 1≤i≤j≤N 的花 (i,j),Bessie 会给从花 i 到花 j 之间的所有花(包括 i 和 j)拍一张照。
    后来 Bessie 查看这些照片时注意到有些照片里存在「平均」的花——一朵恰好有 P 朵花瓣的花,其中 P 等于照片中所有花的花瓣数量的平均值。
    Bessie 的照片中有几张存在平均的花?

  • 思路

    枚举区间长度,一直维护一个区间长度的队列,用哈希表判断元素是否存在即可

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    '''
    Author: NEFU AB-IN
    Date: 2022-02-18 09:41:02
    FilePath: \ACM\Acwing\3347.py
    LastEditTime: 2022-02-18 09:54:02
    '''
    from collections import Counter, deque

    if __name__ == "__main__":
    n = int(input())
    a = list(map(int, input().split()))
    res = 0
    for i in range(1, n + 1): #枚举区间长度
    q = deque()
    d = Counter()
    cnt = 0
    for j in range(n): #枚举区间内的数
    if len(q) < i:
    q.appendleft(a[j])
    d[a[j]] += 1
    cnt += a[j]
    if len(q) == i:
    if cnt % i == 0 and d[cnt // i]:
    res += 1
    t = q.pop()
    d[t] -= 1
    cnt -= t
    print(res)
使用搜索:谷歌必应百度