A - Ostap and Grasshopper
zz题能不能跳到 每次只能跳K步 不能跳到# 问能不能T-G 随便跳跳就可以了 第一次居然跳越界0.0 傻子哦 WA1
n,k = map(int,input().split())s = input()i = 0st = -1def jump(st): while(st=n or s[st]=='#'): return "NO" if(s[st]=='T' or s[st]=='G'): return "YES" return "NO"while(i
B - Urbanization
均值之和最大 贪心 最大的放在小部分 我们可以反证 交换任意的人在两个city 会使情况变坏
n,x,y = map(int,input().split())a = list(map(int,input().split()))a.sort(reverse = True)if(x>y): x,y = (y,x)cx = 0cy = 0m,n = (x,y)for i in a: if(x>0): x-=1 cx+=i elif(y>0): y-=1 cy+=i else: breakprint(cx/m+cy/n)
C - Tennis Championship
相差一场的可以比赛 那么最优的是相隔一次n,n+1 能产生n+2的 所以就是斐波那契了 这题ZZ
n = eval(input())a = [0]*100a[0] = 1a[1] = 2for i in range(2,100): a[i]=a[i-1]+a[i-2] if(a[i]>n): n = i-1 breakprint(n)
D - Taxes
问能分解为质数的最少个数 答案就三种 1 2 3 我们先考虑本身为质数的 ans = 1
不是质数但是是偶数的 哥德巴赫猜想 ans = 2不是质数但是是奇数 如果他能有两个质数组成 那么其中一个一定是2 只需要判断n-2 是否为素数即可 ans = 2
否则的话就是ans = 3
然后就AC了...这套题的前四个有点水啊.... 但是还是累计wa3发
import mathn = eval(input())def isP(n): lim = int(math.sqrt(n + 0.5)) for i in range(2,lim+1): if(n%i==0): return False return Trueans = 0if(isP(n)): ans = 1elif(n%2==0): ans = 2elif(isP(n-2)): ans = 2else: ans = 3print(ans)
mk一下 树形DP
F
待补