本篇为笔记非题解 描述较为简略
全排列 itertools中的permutations 做题时要想清楚是排列还是组合
不论是列表还是字符串 调用permutations or combinations 返回每个元素以元组形式存在
import itertools s=[1,2,3,4,5] for i in itertools.permutations(s,5): print(i) #输出 #(1, 2, 3, 4, 5) #(1, 2, 3, 5, 4) #(1, 2, 4, 3, 5) #(1, 2, 4, 5, 3).... a="12345" for i in itertools.permutations(a,5): print(i) #输出 #('5', '3', '4', '1', '2') #('5', '3', '4', '2', '1') #('5', '4', '1', '2', '3') #('5', '4', '1', '3', '2')
唯一区别在于 元素的组成部分是数字还是字符串
permutations(combinaitons)(序列,生成元素长度) 如果生成元素长度为序列长度,可以省略。
如何将一个序列作为数字输出?
如果生成的序列都是数字 可以通过循环s=s*10+a[i] 实现
如果生成的序列都是字符串 可以通过int(''.join(序列))
本题关键点在于 通过分割序列 ,切分得到a,b,c
在取分割点的时候 我们只关心其个位上的数字
这道题的题解思路来源:蓝桥杯-带分数-python_晓宜的博客-CSDN博客在ACWing已经AC,蓝桥杯评判系统有一点问题据说导致超时。
一开始看到这题,没想法。感觉这是一道物理题撞来撞去。
后来看了别人的分析,懂了其实有时候没必要把问题想的太复杂,转换一下就简单了。
感冒A对撞上健康B 两者反向跑 等效于各自继续朝着原来的方向向前跑只不过B也感冒了
所以无论怎么撞 都可以把每个蚂蚁看作单向运动 那么必然都能跑到端点
如果和A面对面的有n个蚂蚁,那么这n个蚂蚁势必会影响到跟在A屁股后的m个蚂蚁
那么就一共有m+n+1个蚂蚁感冒了 ,其他的蚂蚁感冒不着。
所以当觉得问题过于复杂了,很有可能是自己想得太复杂了,换一个想法,就好了。
小郑AC代码:
#能感染 只能是反向跑 n=int(input()) l=list(map(int,input().split())) right,left=0,0 p=l[0] for i in range(1,len(l)): if p>0:#第一个蚂蚁向右走:如果结束循环right=0那么输出1 if abs(l[i])>abs(p) and l[i]*p<0: right+=1#右侧蚂蚁感染数目 elif abs(l[i])<abs(p) and l[i]*p>0: left+=1#左侧蚂蚁感染数目 else: pass else:#第一个蚂蚁向左走:如果结束循环left=0那么输出1 if abs(l[i])>abs(p) and l[i]*p>0: right+=1# elif abs(l[i])<abs(p) and l[i]*p<0: left+=1 else: pass print(right+left+1) if right*left!=0 else print(1)
其次要注意严谨,第一个蚂蚁的朝向也会影响结果,不能草率下结论。
埃筛法板子:
max=int(input()) prime=[0 for i in range(max+1)] def generate_prime(): cnt=0#素数个数 is_prime=[1 for i in range(max+1)]#1标记素数,0标记非素数 is_prime[0]=is_prime[1]=0#0,1不是素数 for i in range(2,max+1): if is_prime[i]==1:#是素数 cnt+=1 prime[cnt]=i j=i while j<=max: is_prime[j]=0 j+=i#把i的倍数标记为非素数 return cnt cnt=generate_prime() for i in range(1,cnt+1):a print(prime[i],end=' ') #输出0~max的素数一般步骤 #两个容器 prime,is_prime prime[i]代表第i个素数,is_prime[i]代表第i是否为素数 #0还是1? #一个计数器cnt 关联到prime下标,初始化为0 #遍历2到max 如果i是素数,1:那么通过cnt计入prime #2:从[i,max]的范围内把i的倍数is_prime标记为非素数 #总结:两个容器 一个计数器
树的直径:某乎链接【朝夕的ACM笔记】树上问题-树的直径 - 知乎 (zhihu.com)
更推荐去看下面这个姐姐讲解,很细致,慢慢地讲,对新手很友好