2021-10-12leetcode

快速加

def fast_multi(a,b):
    ans=0
    while b:
        if b&1:
            ans+=a
        a*=2
        b>>=1
    return ans
         

快速幂

def faster_power(a,b):
    ans=1
    while b:
        if b&1:
            ans*=a
        a*=a
        b>>=1
    return ans

二分图的最大匹配

  • 一次A掉
import collections
def dfs_hungary(i, isvisited, map_):
    for j in range(1, m + 1):
        if edge[i][j] and not isvisited[j]:
            isvisited[j] = 1
            if map_[j] == 0 or dfs_hungary(map_[j], isvisited, map_):
                map_[j] = i
                return True
    return False


if __name__ == '__main__':
    n, m, e_num = [int(i) for i in input().split()]
    edge = [[0] * (m + 1) for _ in range(n + 1)]
    for _ in range(e_num):
        u, v = [int(i) for i in input().split()]
        #edge[u][v], edge[v][u] = 1, 1
        edge[u][v]=1
    ans = 0
    # isvisited=[False]*m
    map_ = collections.defaultdict(int)
    for i in range(1, n + 1):
        isvisited = [False] * (m + 1)
        if dfs_hungary(i, isvisited, map_):
            ans += 1
    print(ans)


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 其实读完斯坦福的这本《互联网大规模数据挖掘》,让我感觉到,什么是人工智能?人工智能就是更高层次的数据挖掘。机...
    我偏笑_NSNirvana阅读 13,145评论 1 23
  • 归去来兮。 1.1 说明 本篇为《挑战程序设计竞赛(第2版)》[http://www.ituring.com.cn...
    尤汐Yogy阅读 14,906评论 0 160
  • 最长公共子序列 题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列。 输入输出格式 输入格式: 第一...
    由希儿阅读 444评论 0 0
  • 这一篇是总结一下二分图的剩余内容,其中最主要的部分是二分图最大匹配算法。 一. 二分图最大匹配: 1. 二分图最大...
    kakokuryoku阅读 2,274评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 7,987评论 0 4

友情链接更多精彩内容