冲刺蓝桥杯,GOGOGO---倒计时12天

学习目标:

提示:熟悉练习前缀和、差分法、二维前缀和、二维差分、二阶差分

例如:https://github.com/alibaba/fastjson

  • 刷题刷题刷题

学习内容

我是FW,两天做了一道题,还是记录下来吧:
作物杂交:
https://www.lanqiao.cn/problems/506/learning/

N,M,K,T=map(int,input().split())
#N 表示作物种类总数 (编号 1 至 N),M表示初始拥有的作物种子类型数量,K 表示可以杂交的方案数,T 表示目标种子的编号。
Time = list(map(int,input().split()))
ls=[]
ls+=list(map(int,input().split()))#ls表示已有的种子
#创建杂交列表
zajiao = [[] for i in range(N+1)]
for i in range(K):
  x=list(map(int,input().split()))
  max_time=max(Time[x[0]-1],Time[x[1]-1])
  zajiao[x[-1]].append([x[0],x[1],max_time])
dp1=[float("inf") for i in range(N+1)] #作物培养时间初始化为无穷大
for i in ls:
  dp1[i]=0#已拥有的种子
def dp(x,zajiao,Time):
  if dp1[x]!=float("inf"): #已计算的作物直接返回
    return dp1[x]
  for i in zajiao[x]:
    a=i[0]
    b=i[1]
    #print(a,b)
    dp1[x]=min(dp1[x],max(dp(a,zajiao,Time),dp(b,zajiao,Time))+i[2])
  return dp1[x]
print(dp(T,zajiao,Time))

直线(蓝桥杯)
这个填空题一定要思考全面呀,太多坑了,哭了。不要相信给的样例,自己用复杂点的多测试一下

set1 = set({})
def max_yin(x,y):
    if x<0:
        x=-1*x
    elif y<0:
        y=-1*y
    m=min(x,y)
    mx=1
    for i in range(2,m+1):
        if x%i==0 and y%i==0:
            mx=i
    return mx
for x1 in range(20):
    for y1 in range(21):
        for x2 in range(20):
            for y2 in range(21):
                if x1==x2 and y1==y2:
                    continue
                elif x1==x2:
                    k_zi=80
                    k_mu=2
                    b_zi=x1
                    b_mu=x1
                elif y1==y2:
                    k_zi=0
                    k_mu=0
                    b_zi=y1
                    b_mu=y1
                else:
                    u=y2-y1
                    d=x2-x1
                    if u<0 and d<0:
                        u=u*-1
                        d=d*-1
                    elif d<0:
                        d*=-1
                        u*=-1
                    yin=max_yin(u,d)
                    k_zi=u//yin
                    k_mu=d//yin
                    yin_b=max_yin(y1*k_mu-k_zi*x1,k_mu)
                    b_zi=(y1*k_mu-k_zi*x1)//yin_b
                    b_mu=(k_mu)//yin_b
                group=(k_zi,k_mu,b_zi,b_mu)
                #print(group)
                set1.add(group)

print(len(set1))

学习产出:

提示:这里统计学习计划的总量

例如:

  • one problem
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值