한국정보올림피아드 지역본선 2007 초등부 4번
DP
서로 교차하지 않는 전깃줄의 최대 개수를 구한다.
서로 교차하지 않는 전깃줄의 최대 개수를 구하기 위해선 한 쪽 전봇대 기준으로 정렬을 한 뒤 나머지 전봇대의 번호에서 가장 긴 증가하는 수열을 구하면 된다.
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct dot{
int x,y;
}dot;
dot in[101];
int dp[101];
int cmp(dot a, dot b){
return a.x<b.x;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>in[i].x>>in[i].y;
sort(in+1,in+n+1,cmp);
int ans=0;
for(int i=0;i<=n;i++){
for(int j=0;j<i;j++){
if(in[i].y>in[j].y){
dp[i]=max(dp[i],dp[j]+1);
}
}
}
cout<<n-ans;
}
[백준] 9251번 LSC (C) (0) | 2020.04.21 |
---|---|
[백준] 11054번 가장 긴 바이토닉 부분 수열 (C) (0) | 2020.04.09 |
[백준] 11053번 가장 긴 증가하는 부분 수열 (C) (0) | 2020.04.06 |
[백준] 2156번 포도주 시식 (C) (0) | 2020.03.30 |
[백준] 10844번 쉬운 계산 수 (C) (0) | 2020.03.30 |