A. Recovering a Small String考点模拟思路因为数据范围非常的小可以直接三个for循环暴力解决。复杂度O()import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) b[0]*3 for i in range(1,27): for j in range(1,27): for k in range(1,27): if ijkn: b[2]chr(ord(a)(i-1)) b[1]chr(ord(a)(j-1)) b[0]chr(ord(a)(k-1)) break print(b[0],end) print(b[1], end) print(b[2], end) print()B. Make Equal考点前缀贪心思路因为题目要求所有数都要相等那么我们就先算每个瓶子平均要有的水量然后看前缀是否大于等于当前的平均水量。只要有一个小于那就是不满足。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) alist(map(int,input().split())) ssum(a)//n st0 okTrue for i in range(n-1): sta[i] if st(i1)*s: okFalse break if ok: print(Yes) else: print(No)C. Make Equal Again考点模拟思路由题意可知只可能看第一个数和最后一个数数他们两个分别有多少连续的数然后用总长度相减取最小值输出即可。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) alist(map(int,input().split())) ksa[0] jsa[-1] min_z10**18 cnt1 1 for i in range(1,n): if ksa[i]: cnt11 else: break min_zmin(n-cnt1,min_z) cnt21 for i in range(n-2,-1,-1): if a[i]js: cnt21 else: break min_z min(n - cnt2, min_z) min_z min(n - cnt1, min_z) if ksjs: min_zmin(min_z,n-cnt1-cnt2) if min_z0: min_z0 print(min_z)D. Divisible Pairs考点数论哈希表思路将题目转换一下可以转换为。可以转换为。然后用哈希表统计一下输出即可。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): n,x,ymap(int,input().split()) alist(map(int,input().split())) cnt0 mp{} for v in a: rxv%x ryv%y need((-rx)%x,ry) cntmp.get(need,0) key(rx,ry) mp[key]mp.get(key,0)1 print(cnt)E. Anna and the Valentines Day Gift考点博弈论贪心思路由题目可知只有Anna可以将数的位数变小Sasha只能让数组中的元素个数变少但是赢的条件是跟位数有关。所以我们可以先把零0个数用数组统计出来然后降序排序。Anna想赢肯定是要优先将0多的数给反转Sasha想赢也要优先把零多的合并。也就是说他们两个都会选零多的。又因为他们是一人选一次所以Anna选奇数次。于是我就可以先算数组字符的总长度然后减去Anna奇数次选的零的数量看这个剩余的结果是不是大于m就行了。复杂度O(n)import sys input sys.stdin.readline sys.setrecursionlimit(10000) tint(input()) def pd(a): cnt0 nlen(a) for i in range(n-1,-1,-1): if a[i]0: cnt1 else: break return cnt for _ in range(t): n,mmap(int,input().split()) alist(input().split()) zh0 b[] for v in a: zhlen(v) b.append(pd(v)) b.sort(reverseTrue) for i in range(0,n,2): zh-b[i] if zhm: print(Sasha) else: print(Anna)
Codeforces Round 925 (Div. 3)
A. Recovering a Small String考点模拟思路因为数据范围非常的小可以直接三个for循环暴力解决。复杂度O()import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) b[0]*3 for i in range(1,27): for j in range(1,27): for k in range(1,27): if ijkn: b[2]chr(ord(a)(i-1)) b[1]chr(ord(a)(j-1)) b[0]chr(ord(a)(k-1)) break print(b[0],end) print(b[1], end) print(b[2], end) print()B. Make Equal考点前缀贪心思路因为题目要求所有数都要相等那么我们就先算每个瓶子平均要有的水量然后看前缀是否大于等于当前的平均水量。只要有一个小于那就是不满足。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) alist(map(int,input().split())) ssum(a)//n st0 okTrue for i in range(n-1): sta[i] if st(i1)*s: okFalse break if ok: print(Yes) else: print(No)C. Make Equal Again考点模拟思路由题意可知只可能看第一个数和最后一个数数他们两个分别有多少连续的数然后用总长度相减取最小值输出即可。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): nint(input()) alist(map(int,input().split())) ksa[0] jsa[-1] min_z10**18 cnt1 1 for i in range(1,n): if ksa[i]: cnt11 else: break min_zmin(n-cnt1,min_z) cnt21 for i in range(n-2,-1,-1): if a[i]js: cnt21 else: break min_z min(n - cnt2, min_z) min_z min(n - cnt1, min_z) if ksjs: min_zmin(min_z,n-cnt1-cnt2) if min_z0: min_z0 print(min_z)D. Divisible Pairs考点数论哈希表思路将题目转换一下可以转换为。可以转换为。然后用哈希表统计一下输出即可。复杂度O(n)import sys input sys.stdin.readline tint(input()) for _ in range(t): n,x,ymap(int,input().split()) alist(map(int,input().split())) cnt0 mp{} for v in a: rxv%x ryv%y need((-rx)%x,ry) cntmp.get(need,0) key(rx,ry) mp[key]mp.get(key,0)1 print(cnt)E. Anna and the Valentines Day Gift考点博弈论贪心思路由题目可知只有Anna可以将数的位数变小Sasha只能让数组中的元素个数变少但是赢的条件是跟位数有关。所以我们可以先把零0个数用数组统计出来然后降序排序。Anna想赢肯定是要优先将0多的数给反转Sasha想赢也要优先把零多的合并。也就是说他们两个都会选零多的。又因为他们是一人选一次所以Anna选奇数次。于是我就可以先算数组字符的总长度然后减去Anna奇数次选的零的数量看这个剩余的结果是不是大于m就行了。复杂度O(n)import sys input sys.stdin.readline sys.setrecursionlimit(10000) tint(input()) def pd(a): cnt0 nlen(a) for i in range(n-1,-1,-1): if a[i]0: cnt1 else: break return cnt for _ in range(t): n,mmap(int,input().split()) alist(input().split()) zh0 b[] for v in a: zhlen(v) b.append(pd(v)) b.sort(reverseTrue) for i in range(0,n,2): zh-b[i] if zhm: print(Sasha) else: print(Anna)