본문 바로가기

CP_contest_Review

AtCoder ABC 190

반응형

solved: 3 out of 6

 

C번까지 푸는데 30분이 안걸렸는데, D번 수학에서 막혔습니다.

 

A - Very Very Primitive Game

둘이 같은 수의 캔디를 들고 있는 상황을 고려하면 쉽게 해결 할 수 있습니다.


    if (c==0) {
        if (a>b) cout << "Takahashi" << endl;
        else cout << "Aoki" << endl;
    }
    else {
        if (a<b) cout << "Aoki" << endl;
        else cout << "Takahashi" << endl;
    }

 

B - Magic 3

주어진 스펠 중 한번이라도 데미지를 줄 수 있는지 확인해주면 쉽게 해결 할 수 있습니다.

 if (a<s && b >d) f=true;

 

C - Bowls and Dishes

M가지의 조건이 주어질때, 각각의 조건에서 묻고있는 접시 위에 올려진 공이 1개 이상이면 True

$c_{i}$ 혹은 $c_{j}$위에 공을 한개 올리는 k가지의 상태가 주어지고, 이때 최대 몇가지의 조건을 만족 시킬 수 있는지 묻는 문제입니다.

k가 최대 16임으로 비트마스킹을 이용하여 전체 경우의 수에서 max값을 찾아주면 쉽게 해결 할 수 있습니다.

    for (int i = 0; i<(1<<k); i++) {
        int tmp = 0;
        int dishs[n+1];
        fill(dishs, dishs+n+1, 0);
        for (int j = 0; j<k; j++) {
            if (i&(1<<j))
                dishs[person[j].X]++;
            else
                dishs[person[j].Y]++;
        }
        rep(i, m) {
            if (dishs[conditions[i].X]>0 && dishs[conditions[i].Y]) tmp++;
        }
        ans = max(ans, tmp);
    }

 

반응형

'CP_contest_Review' 카테고리의 다른 글

AtCoder ABC 191  (2) 2021.02.07
Codeforces R699 D2  (0) 2021.02.06
codeforces R698 D2  (0) 2021.01.29
Codeforces R697 D3  (0) 2021.01.26
CF R696 D2  (0) 2021.01.20