| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 1024 MB | 1135 | 361 | 278 | 32.363% |
어떤 문자열에서 연속한 위치에 있는 1개 이상의 문자를 선택해 순서를 유지한 채로 나열해서 얻을 수 있는 문자열을 그 문자열의 부분문자열이라 한다. 예를 들어, 001ドル$는 $X = 1\underline{001}1$의 부분문자열이지만, $Y = 10101$의 부분문자열은 아니다.
음이 아닌 두 정수 $A, B$의 배타적 논리합 $A \oplus B$는 다음과 같이 정의된다.
0ドル$과 1ドル$로만 구성된 길이가 $N$인 문자열 $S$가 주어진다.
당신은 $S$의 부분문자열 $s_1, s_2$를 선택해서 만들 수 있는 $g(s_1, s_2)$의 최댓값을 계산해야 한다. $g(s_1, s_2)$는 다음과 같이 정의되는 함수이다:
이때 $s_1$과 $s_2$가 서로 다를 필요는 없다. 즉, $s_1$과 $s_2$는 $S$에서 일부가 겹쳐도 되고, 완전히 같은 문자열이어도 된다.
0ドル$과 1ドル$로만 구성된 문자열 $S$가 주어지면, 가능한 $g(s_1, s_2)$의 최댓값을 구하는 프로그램을 작성하라.
첫 번째 줄에 테스트 케이스의 개수 $T$가 주어진다.
각 테스트 케이스마다, 첫 번째 줄에 문자열의 길이 $N,ドル 두 번째 줄에 0ドル$과 1ドル$로만 구성된 길이가 $N$인 문자열 $S$가 주어진다.
각 테스트 케이스마다 가능한 $g(s_1, s_2)$의 최댓값을 이진법으로 한 줄에 하나씩 출력한다. 단, 정답 앞에 필요 없는 0ドル$은 출력하지 않는다.
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 17 | $N \le 30,ドル 모든 테스트 케이스에서 $N$의 합 $\le 300$ |
| 2 | 20 | $N \le 200,ドル 모든 테스트 케이스에서 $N$의 합 $\le 2000$ |
| 3 | 13 | $N \le 3,000円,ドル 모든 테스트 케이스에서 $N$의 합 $\le 30,000円$ |
| 4 | 12 | $N \le 2 \times 10^5,ドル 모든 테스트 케이스에서 $N$의 합 $\le 2 \times 10^6$ |
| 5 | 38 | 추가 제약 조건 없음. |
4 3 010 5 10101 5 00100 5 11111
11 11111 110 11110
4 2 00 2 01 2 10 2 11
0 1 11 10
Olympiad > 한국정보올림피아드 > KOI 2024 2차대회 > 중등부 3번
Olympiad > 한국정보올림피아드 > KOI 2024 2차대회 > 고등부 2번