• freee会計 (1)
    • API (1)
  • 競プロ (164)
    • アルゴリズム (4)
    • ABC解説 (150)
  • python (6)
  • ブログ (6)
    • AFFINGER (1)
    • プラグイン (2)
  • Googleスプレッドシート (2)
    • GAS (2)
  • プログラミング (5)
    • no imageデータベース (2)
    • no imageExcel (3)
  • 雑記 (6)
  • カナヘビ (4)
  • Edit (227)

文系独学プログラマーの仕訳帳

  •  HOME
  •  Twitter
  •  問い合わせ
  1. HOME >
  2. Edit >

Edit

【pythonでZONE2021を解説】C - MAD TEAM

2022年1月24日

問題概要

問題ページ

C - MAD TEAM
C - MAD TEAM

問題ページへ移動する

ストーリー

さて、本格的に UFO と対峙する仲間を集めることにしよう。それも、とびきり MAD で優秀な。
俺は数多の天才たちと競い合ってきた「AtCoder」上でメンバーを集めることにした。
名の知れたプログラマに片っ端から声をかけてもいいが、どうせなら得意分野のバランスが良い少数精鋭で最高なチームを作るとしよう。

問題文

\(N\) 人のメンバー候補がおり、それぞれの人は、パワー・スピード・テクニック・知識・発想力の \(5\) 種類の能力値を持っています。
\(i\) 番目の人のパワーは \(A_i\) 、スピードは \(B_i\) 、テクニックは \(C_i\) 、知識は \(D_i\) 、発想力は \(E_i\) です。
あなたは、\(N\) 人のメンバー候補から \(3\) 人を選び、\(1\) つのチームを作ります。
チーム全体のパワーをチームメンバーのパワーの最大値で定義します。スピード・テクニック・知識・発想力についても同様に定義します。
チームの総合力を、チーム全体のパワー・スピード・テクニック・知識・発想力の最小値で定義します。
チームの総合力としてありえる最大値を求めてください。

制約

  • 入力は全て整数
  • \(3 ≤ N ≤ 3000\)
  • \(1 ≤ A_i, B_i, C_i, D_i, E_i ≤ 10^9\)

問題の考察

ACコード

import sys
import itertools


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n = int(input().rstrip('\n'))
    abcde = [list(map(int, input().rstrip('\n').split())) for _ in range(n)]
    cor_v = -1
    inc_v = 10 ** 10
    while - cor_v + inc_v > 1:
        bin_v = (cor_v + inc_v) // 2
        cost = False
        bt_ls = [[False] * pow(2, 5) for _ in range(4)]
        bt_ls[0][0] = True
        #条件を満たすcostを全検索
        for i in range(len(abcde)):
            bt = 0
            for j in range(5):
                if abcde[i][j] >= bin_v:
                    bt += pow(2, j)
            for j in range(3, 0, -1):
                for k in range(pow(2, 5)):
                    p = k | bt
                    bt_ls[j][p] = bt_ls[j][p] | bt_ls[j-1][k]
        #costが制約を満たすか
        if bt_ls[-1][-1]:
            cor_v = bin_v
        else:
            inc_v = bin_v
    print(cor_v)


if __name__ == '__main__':
    solve()
  • PostTwitter
  • Share Share
  • PocketPocket
  • Hatena Hatena
  • LINE
  • URLコピー

-Edit
-二分探索, BitDP, ABC-Like-C

author

関連記事

no image
【pythonでABC191を解説】C - Digital Graffiti
no image
【pythonでABC162を解説】B - FizzBuzz Sum
no image
【pythonでABC205を解説】B - Permutation Check
no image
【pythonでABC194を解説】C - Squared Error
no image
【pythonでABC149を解説】D - Prediction and Restriction
no image
【pythonでABC161を解説】F - Division or Subtraction

【pythonでZONE2021を解説】B - Sign of Friendship

【pythonでZONE2021を解説】D - Message from Aliens

たびすけ

上場ベンチャー企業勤務
プログラミングが好きで独学

サイト内検索

カテゴリ

  • freee会計 (1)
    • API (1)
  • python (6)
  • 競プロ (164)
    • アルゴリズム (4)
    • ABC解説 (150)
  • ブログ (6)
    • AFFINGER (1)
    • プラグイン (2)
  • Googleスプレッドシート (2)
    • GAS (2)
  • プログラミング (5)
    • no imageデータベース (2)
    • no imageExcel (3)
  • 雑記 (6)
  • カナヘビ (4)
  • Edit (227)

最近のつぶやき

Tweets by XXXHOLiC_xxx

タグ

ABC-A (68) ABC-B (55) ABC-C (43) ABC-D (37) ABC-E (21) ABC-F (11) ABC-Like-A (1) ABC-Like-B (1) ABC-Like-C (1) ABC-Like-D (1) BitDP (2) deque (3) DP (1) heapq (1) imos法 (1) n進数 (1) Union Find (3) Zアルゴリズム (1) セグメントツリー (2) ダイクストラ法 (1) トポロジカル (1) メモ化再帰 (3) レッドローチ (1) ワーシャルフロイド (1) 二分探索 (2) 幅優先探索 (2) 深さ優先探索 (1) 素数 (1) 組み合わせ (3) 論理演算 (4)

文系独学プログラマーの仕訳帳

© 2025 文系独学プログラマーの仕訳帳