pythonで青くなるブログ

主に競プロのについての記事(日記的な)を書きます。現在atcoder水色,こどふぉ青色。python3使って、やってます。atcoder青くなりたい

Educational Codeforces Round 67 Div2 A

Intro

codeforces.com

A: Stickers and Toys

問題文

  • おもちゃ屋チョコエッグが売ってて、中にはおもちゃが入っている。
  • チョコエッグの中身は3種類ある。
    • sticker のみが一つ入っている
    • toyのみが一つ入っている
    • sticker と toyが一つづつ入っている。
  • どのチョコエッグに、何が入っているのかはわからない。
  • 全文のチョコエッグの数と、stickerの数とtoyの数は分かっている。
  • 少なくともstickerとtoyを一つづつ手に入れるためには、最低何個のチョコエッグを買えばいいか.

input

output

  • 確実に stickerとtoyを一つづつ手に入れるために、最低何個のチョコエッグを買えばいいのか?

consider

  • stickerとtoyのセットを買えば、一つで両方手に入る。
  • 「確実に手に入る最小の数」は、 一種類のみしか買わないようにして買ったときの最大数 +1になりそう
  • つまり、(toyのみ、もしくは、stickerのみのものを片方のみできるだけ多く買ったとき)+1になる。

    idea

  • チョコエッグの中身は、3種類あるのでそれぞれ何個ずつなのかを求める。
  • それで、max(toyのみ,stickerのみ)+1個買えば、確実に両方手に入る。
  • toyとstickerのセットになってるチョコエッグの数は、set_num=(sticker+toy-n)で求められる。
  • それを使って、toyのみのチョコエッグの数は、t-(set_num)で求められる。(stickerも同様)

implementation

# python template for atcoder1
import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline
 
 
def solve():
    N = int(input())
    for _ in range(N):
        n, t, s = map(int, input().split())
        set_num = s+t-n
        print(max(s-set_num, t-set_num)+1)
 
 
solve()

所感

  • atcoderのB問題あたりで出てきそう
  • みんな一瞬で解いてたのに、結構時間かかってしまったので焦った。
  • 頑張って英語を読みたい