포럼
문제 USACO0658

최고의 부분 수열

설명

농부 존은 길이 \(N\)(\(1 \leq N \leq 10^9\))의 이진 문자열을 가지고 있으며, 처음에는 모두 0이다.

그는 먼저 문자열에 \(M\)개(\(1 \leq M \leq 2 \cdot 10^5\))의 갱신을 순서대로 수행한다. 각 갱신은 \(l\)부터 \(r\)까지의 모든 문자를 뒤집는다. 구체적으로, 문자를 뒤집으면 \(0\)\(1\)로, \(1\)\(0\)으로 바뀐다.

그다음 그는 \(Q\)개(\(1 \leq Q \leq 2 \cdot 10^5\))의 쿼리를 묻는다. 각 쿼리에서 그는 \(l\)부터 \(r\)까지의 부분 문자열의 문자들로 이루어진 길이 \(k\)의 사전순으로 가장 큰 부분 수열을 출력하도록 요청한다. 답이 이진 문자열 \(s_1s_2 \dots s_k\)라면, \(\sum_{i=0}^{k-1} 2^i \cdot s_{k-i}\)(즉, 이진수로 해석했을 때의 값)를 \(10^9+7\)로 나눈 나머지를 출력한다.

부분 수열은 어떤 문자열에서 일부 문자를 삭제하거나 하나도 삭제하지 않고, 남은 문자들의 순서를 바꾸지 않은 채 얻을 수 있는 문자열이다.

길이가 같은 문자열 \(A\)가 문자열 \(B\)보다 사전순으로 크다는 것은, \(A_i \neq B_i\)인 첫 번째 위치 \(i\)가 존재하고 그 위치에서 \(A_i > B_i\)인 것과 동치임을 상기하라.

Problem credits: Chongtian Ma

제약

배점

  • 입력 4: \(N \leq 10, Q \leq 1000\)
  • 입력 5: \(M \leq 10\)
  • 입력 6-7: \(N, Q \leq 1000\)
  • 입력 8-12: \(N \leq 2 \cdot 10^5\)
  • 입력 13-20: 추가 제약이 없다.

Problem credits: Chongtian Ma

입력 형식

첫째 줄에 \(N\), \(M\), \(Q\)가 주어진다.

다음 \(M\)개의 줄에 각 갱신의 양 끝점인 두 정수 \(l\)\(r\)(\(1 \leq l \leq r \leq N\))이 주어진다.

다음 \(Q\)개의 줄에 각 쿼리의 양 끝점과 부분 수열의 길이인 세 정수 \(l\), \(r\), \(k\)(\(1 \leq l \leq r \leq N, 1 \leq k \leq r - l + 1\))가 주어진다.

출력 형식

\(Q\)개의 줄을 출력한다. \(i\)번째 줄에 \(i\)번째 쿼리의 답을 출력한다.

예제 1
입력
5 3 9
1 5
2 4
3 3
1 5 5
1 5 4
1 5 3
1 5 2
1 5 1
2 5 4
2 5 3
2 5 2
2 5 1
출력
21
13
7
3
1
5
5
3
1
설명

After performing the \(M\) operations, the string is \(10101\).

For the first query, there is only one subsequence of length \(5\), \(10101\), which
is interpreted as
\(1 \cdot 2^4 + 0 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 21\).

For the second query, there are \(5\) unique subsequences of length \(4\): \(0101\),
\(1101\), \(1001\), \(1011\), \(1010\). The lexicographically largest subsequence is
\(1101\), which is interpreted as
\(1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1\cdot 2^0 = 13\).

For the third query, the lexicographically largest sequence is \(111\), which is
interpreted as \(7\).

예제 2
입력
9 1 1
7 9
1 8 8
출력
3
예제 3
입력
30 1 1
1 30
1 30 30
출력
73741816
설명

Make sure to output the answer modulo \(10^9+7\).

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2024-2025 > February > Gold

태그

평가 및 의견

The Best Subsequence

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

The Best Subsequence

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8