티스토리 뷰
반응형
solved.ac 티어 : 플래 3
새로 떨어지는 블록은 자신의 구간에서의 최댓값+1이다. 그러므로 세그레이지로 max를 구해주고 max+1 값을 구간에 저장해준다. 그리고 max값이 최대 높이일 경우 최대 높이를 올려준다음 마지막에 나온 최대 높이를 출력해주면 된다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct qu{
ll left,right;
};
vector<qu>l(2000001);
ll a,tree_size;
vector<ll>tree(8010000);
vector<ll>tree1(8010000);
vector<ll>A;
ll seg(ll n,ll s,ll e){
if(s==e){return tree[n]=0;}
return tree[n]=max(seg(n*2,s,(s+e)/2),seg(n*2+1,(s+e)/2+1,e));
}
void propagate(ll n,ll s,ll e){
if(tree1[n]!=0){
if(s!=e){
tree1[n*2]=max(tree1[n*2],tree1[n]);
tree1[n*2+1]=max(tree1[n*2+1],tree1[n]);
}
tree[n]=max(tree[n],tree1[n]);
tree1[n]=0;
}
}
ll max1(ll n,ll s,ll e,ll left,ll right){
propagate(n,s,e);
if(left>e||right<s){return 0;}
if(left<=s&&e<=right){return tree[n];}
return max(max1(n*2,s,(s+e)/2,left,right),max1(n*2+1,(s+e)/2+1,e,left,right));
}
void change(ll n,ll s,ll e,ll s1,ll e1,ll f){
propagate(n,s,e);
if(s1<=s&&e<=e1){tree1[n]=max(f,tree1[n]);propagate(n,s,e);return;}
if(e1<s||s1>e){return;}
change(n*2,s,(s+e)/2,s1,e1,f);
change(n*2+1,(s+e)/2+1,e,s1,e1,f);
tree[n]=max(tree[n*2],tree[n*2+1]);
}
int main()
{
ll b,c,d,q,k,gh,gk,cnt=0,val=0,as=0;
scanf("%lld",&a);
int i;
for(i=0;i<a;i++){
scanf("%lld %lld\n",&l[i].left,&l[i].right);
as=l[i].right;
l[i].right+=l[i].left-1;
l[i].left=as;
A.push_back(l[i].left);
A.push_back(l[i].right);
}
sort(A.begin(),A.end());
A.erase(unique(A.begin(),A.end()),A.end());
for(i=0;i<a;i++){
l[i].left=lower_bound(A.begin(),A.end(),l[i].left)-A.begin();
l[i].right=lower_bound(A.begin(),A.end(),l[i].right)-A.begin();
}
seg(1,0,2000000);
for(i=0;i<a;i++){
//printf("%lld %lld\n",l[i].left,l[i].right);
val=max1(1,0,2000000,l[i].left,l[i].right);
if(val==cnt)cnt++;
//printf("#%lld\n",val);
change(1,0,2000000,l[i].left,l[i].right,val+1);
//printf("%lld\n",cnt);
}
printf("%lld\n",cnt);
}
반응형
'ps' 카테고리의 다른 글
BOJ 14268(회사 문화 2)풀이 (0) | 2021.03.07 |
---|---|
BOJ 14267(회사 문화 1)풀이 (0) | 2021.03.07 |
BOJ 14574(헤븐스 키친)풀이 (0) | 2021.03.03 |
BOJ 17472(다리 만들기 2)풀이 (0) | 2021.03.01 |
BOJ 16404(주식회사 승범이네)풀이 (0) | 2021.02.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 다이나믹 프로그래밍
- 이분매칭
- 최소 스패닝 트리
- 깊이 우선 탐색
- 자료 구조
- 누적 합
- 구현
- 그래프 이론
- 느리게 갱신되는 세그먼트 트리
- 알고리즘
- 이분 탐색
- 트리
- 트리에서의 다이나믹 프로그래밍
- 완전 탐색
- 세그먼트 트리
- 선분 교차 판정
- KOI
- 수학
- 잡봇
- 자료구조
- 개발
- discord bot
- BOJ
- 그리디 알고리즘
- 그래프 탐색
- codeforces
- 정렬
- C++
- Python
- A Dance of Fire and Ice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
글 보관함