A.Creating Words
思路:
模拟,注意split()函数的用法
t = int(input())
for i in range(t):
a = input().split()
a_ = a[0]
b_ = a[1]
a_ = list(a_)
b_ = list(b_)
a_[0],b_[0] = b_[0],a_[0]
s1 = ''
s2 = ''
for i in a_:
s1 += i
for j in b_:
s2 += j
print(s1,s2)
B.Maximum Multiple Sum
思路:
规律题,多试几个数发现3的时候为3,其余情况都为2
t = int(input())
for i in range(t):
n = int(input())
if n == 3:
print(3)
else:
print(2)
C.Good Prefixes
思路:
因为要统计前缀,先看第一个数是否为0,若是则count1加1,后面使用sum来更新前缀的和,再用max_a来统计前缀的最大值,从第二个数开始往后遍历,时刻更新sum和max_a的值,若sum-max_a-max_a等于0则count1加1,一直遍历到最后
t = int(input())
for i in range(t):
n = int(input())
a = list(map(int,input().split()))
count1 = 0
sum = a[0]
max_a = a[0]
if a[0] == 0:
count1 += 1
for i in range(1,len(a)):
max_a = max(max_a,a[i])
sum += a[i]
if sum - max_a - max_a == 0:
count1 += 1
print(count1)
D.Manhattan Circle
思路:
我的想法是把纵坐标和横坐标分别存在list1和list2中,最后取(min(list2)+max(list2))//2和min(list3)+max(list3))//2
t = int(input())
for i in range(t):
n,m = map(int,input().split())
list1 = []
for i in range(n):
a = input()
list1.append(list(a))
list2 = []
list3 = []
for i in range(n):
for j in range(m):
if list1[i][j] == '#':
list2.append(i+1)
list3.append(j+1)
print((min(list2)+max(list2))//2,()min(list3)+max(list3))//2
E. Secret Box
思路:
S的三个边长都必须被k整除,那么我们可以枚举a,b,然后c用k/(a*b),注意a<=x,b<=y,c<=z,,为了得到每个轴的位置,我们只需将每个轴的移动空间相乘,为(x-a+1) * (y-b+1) * (z-c+1)
每次更新这个值,直到找到最大符合值
t = int(input())
for i in range(t):
x,y,z,k = map(int,input().split())
ans = 0
for a in range(1,x+1):
for b in range(1,y+1):
if k % (a*b) != 0:
continue
c = k // (a*b)
if c > z:
continue
ways = (x-a+1) * (y-b+1) * (z-c+1)
ans = max(ans,ways)
print(ans)
F. Final Boss
思路:
二分答案,注意右边界不要开小了,定义sum每次加上第一回合和可以家的回合可加的伤害
t = int(input())
for i in range(t):
h,n = map(int,input().split())
a = list(map(int,input().split()))
c = list(map(int,input().split()))
left = 0
right = 1e16
max_a = 1e13
while left <= right:
sum = 0
mid = (left + right) // 2
for i in range(len(a)):
sum += a[i] * (mid // c[i])
sum += a[i]
if sum >= h:
max_a = min(max_a,mid)
right = mid - 1
else:
left = mid + 1
print(int(max_a)+1)