티스토리 뷰
반응형
solved.ac 티어 : 플래티넘 5
18138번: 리유나는 세일러복을 좋아해
너비가 3인 티셔츠와 너비가 2인 세일러 카라를 붙이고, 너비가 5인 티셔츠에 너비가 5인 세일러 카라를 붙이고 너비가 7인 티셔츠에 너비가 4인 세일러 카라를 붙이고 너비가 10인 티셔츠에 너비
www.acmicpc.net
이문제는 아주 쉬운 이분 매칭이라 입력을 받고 너비가 w/2 이상 w*3/4 이하랑 너비가 w 이상 w*5/4인 경우 해당 위치에 값을 넣어주고 이분 매칭 하면 끝난다.
(이 문제 못 풀면 이분 매칭 다시 배워야 된다.)
#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
ll inf=1e9;
vector<ll> l[1001];
ll t[1001],q[1001],ty[1001];
ll n,m;
bool dfs(ll x){
for(int i=0;i<l[x].size();i++){
ll y=l[x][i];
if(t[y]){continue;}
t[y]=true;
if(q[y]==0||dfs(q[y])){
q[y]=x;
return true;
}
}
return false;
}
int main()
{
ll c,d,cnt=0;
scanf("%lld %lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&ty[i]);
}
for(int i=1;i<=m;i++){
scanf("%lld",&c);
for(int g=1;g<=n;g++){
if(((double)ty[g]/2<=c && ty[g]*3/4>=c)||(ty[g]<=c && ty[g]*5/4>=c)){
//printf("%lld %lld\n",g,i);
l[g].push_back(i);
}
}
}
for(int i=1;i<=n;i++){
fill(t,t+1001,false);
if(dfs(i)){cnt++;}
}
printf("%lld\n",cnt);
}
딱히 주석도 필요 없을 정도로 쉽다.
반응형
'ps' 카테고리의 다른 글
BOJ 17299(오등큰수)풀이 (0) | 2021.01.10 |
---|---|
BOJ 18282(해킹) 풀이 (0) | 2021.01.10 |
BOJ 19851(버거운 버거)풀이 (0) | 2021.01.07 |
BOJ 1017(소수 쌍) 풀이 (0) | 2021.01.06 |
Codeforces Round #693 (Div. 3) 풀이 (2) | 2021.01.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 트리
- C++
- 그리디 알고리즘
- 구현
- 깊이 우선 탐색
- 수학
- 자료구조
- codeforces
- A Dance of Fire and Ice
- KOI
- 완전 탐색
- 정렬
- BOJ
- 트리에서의 다이나믹 프로그래밍
- 이분매칭
- 그래프 탐색
- 개발
- 세그먼트 트리
- Python
- 최소 스패닝 트리
- 그래프 이론
- 다이나믹 프로그래밍
- 느리게 갱신되는 세그먼트 트리
- 알고리즘
- discord bot
- 누적 합
- 선분 교차 판정
- 자료 구조
- 잡봇
- 이분 탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함