티스토리 뷰

ps

BOJ 2912(백설공주와 난쟁이)풀이

KWG07(joseph0528) 2021. 1. 24. 17:15
반응형

solved.ac 티어 : 플래 3

www.acmicpc.net/problem/2912

 

2912번: 백설공주와 난쟁이

첫째 줄에 난쟁이의 수 N과 모자 색상의 수 C가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ C ≤ 10,000) 둘째 줄에는 각 난쟁이가 쓰고 있는 모자의 색상이 줄을 서 있는 순서대로 주어진다. 셋째 줄에는 사진

www.acmicpc.net

이문제는 수열과 쿼리 6을 응용하면 된다.

6 코드에서 값을 재일 마지막에 구해주면 된다.

처음에는 안될 줄 알았는데 이렇게 해줘도 시간이 여유롭게 남는다.

void add(int u){
    cn[cnt[u]]--;
    cn[cnt[u]+1]++;
}
void ms(int u){
    cn[cnt[u]]--;
    cn[cnt[u]-1]++;
}
fcnt=0;
value=0;
while(Qur[i].s < s){s--;add(L[s]);cnt[L[s]]++;}
while(e < Qur[i].e){add(L[e]);cnt[L[e]]++;e++;}
while(Qur[i].s > s){ms(L[s]);cnt[L[s]]--;s++;}
while(e > Qur[i].e){e--;ms(L[e]);cnt[L[e]]--;}
for(int j=1;j<=QT;j++){
	if(fcnt<cnt[j]){fcnt=cnt[j];value=j;}
}
ans[Qur[i].n] = {fcnt,value};

수쿼 6 코드를 이 부분만 수정해주면 된다.

반응형

'ps' 카테고리의 다른 글

BOJ 9525(룩 배치하기)풀이  (0) 2021.02.01
BOJ 2565(전깃줄)풀이  (0) 2021.01.30
BOJ 2352(반도체 설계)풀이  (0) 2021.01.23
BOJ 20052(괄호 문자열 ?)풀이  (0) 2021.01.22
BOJ 17407(괄호 문자열과 쿼리)풀이  (0) 2021.01.21
댓글