• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594
            給出需要的skill list和每個人的skill,問最少需要其中的幾個人可以滿足skill list里面所有skill
            二進制表示skill+DP,參考Discussion -> https://leetcode.com/problems/smallest-sufficient-team/solutions/3771208/detailed-video-solution-java-python/


            #1125
            #
            Runtime: 121 ms (Beats 88.89%)
            #
            Memory: 18.1 MB (Beats 44.44%)

            class Solution(object):
                def smallestSufficientTeam(self, req_skills, people):
                    """
                    :type req_skills: List[str]
                    :type people: List[List[str]]
                    :rtype: List[int]
                    
            """
                    n_p = len(people)
                    n_s = len(req_skills)
                    sk_map = {sk: i for i, sk in enumerate(req_skills)}
                    dp = [None] * (1 << n_s)
                    dp[0] = []
                    sk_p = []
                    for i in range(n_p):
                        t = 0
                        for sk in people[i]:
                            t |= 1 << sk_map[sk]
                        sk_p.append(t)
                    discard_p = [False] * n_p
                    for i in range(n_p):
                        for j in range(i + 1, n_p):
                            if (sk_p[j] | sk_p[i]) == sk_p[i]:
                                discard_p[j] = True
                            elif (sk_p[j] | sk_p[i]) == sk_p[j]:
                                discard_p[i] = True
                    for i in range(n_p):
                        if not discard_p[i]:
                            for j in range(len(dp)):
                                if dp[j] is None:
                                    continue
                                t = j | sk_p[i]
                                if dp[t] is None or len(dp[j]) + 1 < len(dp[t]):
                                    dp[t] = dp[j] + [i]
                    return dp[(1 << n_s) - 1]
            99久久中文字幕| 亚洲精品无码久久久影院相关影片| 亚洲αv久久久噜噜噜噜噜| 久久亚洲精品无码aⅴ大香| 日韩AV无码久久一区二区| 国产精品对白刺激久久久| 久久综合九色综合久99| 久久这里只精品99re66| 青草国产精品久久久久久| 97精品国产97久久久久久免费| 久久中文精品无码中文字幕| 久久久久无码精品国产| 亚洲欧洲中文日韩久久AV乱码| 蜜臀久久99精品久久久久久小说| 久久久久久久尹人综合网亚洲| 久久久这里有精品| 免费国产99久久久香蕉| 99精品国产综合久久久久五月天| 久久99国产精品99久久 | 乱亲女H秽乱长久久久| 久久久久亚洲爆乳少妇无 | 久久不射电影网| 中文字幕精品久久久久人妻| 国产福利电影一区二区三区,免费久久久久久久精 | 久久99久久99精品免视看动漫| 日韩亚洲国产综合久久久| 久久久青草久久久青草| 亚洲国产成人精品91久久久 | 久久久久亚洲AV综合波多野结衣| 久久国产美女免费观看精品| A狠狠久久蜜臀婷色中文网| 婷婷久久精品国产| 久久本道综合久久伊人| 伊人久久综在合线亚洲2019| 成人国内精品久久久久影院| 久久热这里只有精品在线观看| 色偷偷88欧美精品久久久| 伊人久久大香线蕉综合热线| 亚洲欧美国产日韩综合久久| 亚洲伊人久久成综合人影院| 亚洲午夜福利精品久久|