写倒是写出来四题,但是除了第一题有10%之外都是0
翻了一下,好像没有多少python的分享,把自己的贴出来交流一下好了
第一题用了跟栈,找到能匹配的就消掉,但是最后一个用力出来的结果不对,c++的分享里面矩阵的方法不太懂
import sys
str = sys.stdin.readline()
stack = []
def look(k):
if k == ")":
for i in range(len(stack)-1,-1,-1):
if stack[i] == "(":
del(stack[i])
return
elif k == "]":
for i in range(len(stack)-1,-1,-1):
if stack[i] == "[":
del(stack[i])
return
stack.append(k)
for i in str:
if i == "("&nbs***bsp;i == "[":
stack.append(i)
elif i == ")"&nbs***bsp;i == "]":
look(i)
print(stack)
print(len(stack)) 第二题的面积想了很久跟x轴的交点,出来的数也用round修得跟用例一模一样了,还是0
import sys,math
n = int(sys.stdin.readline())
def fun(x,a,c):
return a/3*(x**3)+0.5*(x**2) +c*x
def ori(x,a,c):
return a*(x**2)+x+c
if n>0:
for i in range(n):
str = sys.stdin.readline().split()
a = int(str[0])
b = int(str[1])
c = int(str[2])
d = int(str[3])
print(a,b,c,d)
if ori((-1/(2*a))) <0:
zero = (-1+math.sqrt(1-4*a*b))/(2*a)
else:
zero = None
print(round(abs(fun(d,a,b)-fun(c,a,b))),5) d第三题取模,本地都能过但是在线就是0,
做了一个dict,只有一个人的组合是n个,从2-n的话,k人团体的组合数是s = 1+2+3+...+n-k+1(找出来的规律不知道对不对),总和就是1*n +...+k*s +...+n
import sys
n = sys.stdin.readline()
n = int(n)
def cal(k):
res = 0
for i in range(1,k+1):
res += i
return res
dic = {}
dic[1] = n
for i in range(2,n+1):
dic[i] = cal(n-i+1)
res = 0
for i in range(1,n+1):
res += i * dic[i]
#print(res)
print(res% (10**9+7)) 第四题我的思路是把每个点作为key,可以通达的点作为value存到dict里面
然后暴力搜一下每个组合的value值是不是一样
好像有10%的过了,但是后面的超时
import sys
str = sys.stdin.readline().split()
n = int(str[0])
m = int(str[1])
p = dict()
def add_route(x,y):
if x not in p:
p[x] = list()
if y not in p:
p[y] = list()
p[x].append(y)
p[y].append(x)
for i in range(m):
temp = sys.stdin.readline().split()
a = temp[0]
b = temp[1]
add_route(a,b)
plist = list(p.keys())
#print(plist)
count = 0
def com(x,y):
return set(x)==set(y)
for i in range(len(plist)):
for j in range(i+1,len(plist)):
if com(p[plist[i]],p[plist[j]]) == True:
count+=1
print(count)
第五题看起来跟第四题有点像,可是没时间了,做的话应该会做个dict,然后用动态规划做
感想:看到有全ac的大佬感觉自己已经凉透了,不过有没有同样用python的来分享一下思路:-)