https://www.acmicpc.net/problem/11968
그냥 Greedy 하게 숫자가 큰 카드들을 하나씩 사용하면서 이긴 횟수가 정답이다.
이길때 간소하게 이기고, 질 때 크게지는 것은 정답을 구할 때 의미가 없다.
1) 이길 때 간소하게 이기는 것은 어차피 해당 카드보다 큰 카드를 사용해야 이기고, 상대와 나의 패가 완전히 동일하지 않아 해당 사항 없다.
2) 질때 크게 지는 것 또한 상대와 나의 패가 완전히 동일 하지 않아 해당 사항 없다.
#include <iostream>
#include <vector>
using namespace std;
vector<bool> cards;
int n,t,w,c;
int main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n;
cards.resize(n*2+1);
for(int i=0;i<n;i++){ cin >> t;cards[t] = true;}
n *= 2;
for(int i=n;i>0;i--){
if(cards[i]){if(c){c--;w++;}}
else c++;
}
cout << w;
}
'알고리즘' 카테고리의 다른 글
BOJ 14451 안대 낀 스피드러너 (0) | 2022.05.24 |
---|---|
BOJ 11983 Radio Contact (0) | 2022.04.21 |
BOJ 15460 My Cow Ate My Homework (0) | 2022.04.20 |
BOJ 11964 Fruit Feast (0) | 2022.04.16 |
BOJ 11997 Load Balancing (Silver) (0) | 2022.03.29 |