λ¬Έμ λ§ν¬
24453λ²: λλ²κΉ (acmicpc.net)
24453λ²: λλ²κΉ
첫 μ€μλ μλμΌλ‘ μμ±λ μ½λ μ€μ μ $N$κ³Ό μ€λ₯κ° μλ μ€μ κ°μ $M$μ΄ μ£Όμ΄μ§λ€. $(1 \le N \le 2 \times 10^7$, $1 \le M \le \min(N,\ 5\times 10^5))$ λ λ²μ§Έ μ€μλ μ½λμμ μ€λ₯κ° μλ μ€μ λ²νΈ $M$κ°κ°
www.acmicpc.net
μΈκ·κ° Yκ° μ΄μμ μ€λ₯λ₯Ό μ κ±°ν ν μλν°κ° μ κ±°ν΄μΌ ν μ€λ₯μ μμ μ΅λκ°μ ꡬνλ λ¬Έμ .
νμ΄
λ¨Όμ κ²½μ°μ μλ₯Ό λλμ΄ λ³΄μ.
1. μΈκ·κ° μλ¬΄λ° μ€λ₯λ₯Ό μμ νμ§ μμλ μλν°κ° μλμΌλ‘ μ€λ₯λ₯Ό μμ ν΄ μ€ μ μλ κ²½μ°
μ¦, μ΅μ΄ μ λ ₯μμ λΆν° μ΄λ―Έ μ€λ₯κ° μλ μ°μλ μ½λμ μ€μ μκ° Xμ΄μμΈ μν.
μ΄λ° κ²½μ°λ μΈκ·κ° μ΅μ Yκ°μ μ€λ₯λ μμ ν΄μΌνλ―λ‘ μ무 μ€λ₯ Yκ°λ₯Ό μμ νλ€.
κ·ΈλΌ μλν°λ μ΅λ M - Y κ°λ₯Ό ν΄κ²°ν΄μΌνλ€.
2. μΈκ·κ° Yκ° μ΄νμ μ€λ₯λ§ μμ ν΄μ£Όλ©΄ μλν°κ° μλμΌλ‘ μ€λ₯λ₯Ό μμ ν΄ μ€ μ μλ κ²½μ°
μΈκ·κ° Yμ΄ν κ°μ μ€λ₯λ§ μμ ν΄μ£Όλ©΄ μ€λ₯ μλ μ°μλ μ½λ μ€μ μκ° Xμ΄μμ΄ λλ κ²½μ°μ΄λ€
μ΄λ° κ²½μ° μμ μλν°λ μ΅λ M - Yκ°μ μ€λ₯λ₯Ό ν΄κ²°ν΄μΌνλ€.
3. μΈκ·κ° Yκ°λ₯Ό μ΄κ³Όν΄μ μ€λ₯λ₯Ό μμ ν΄μΌλ§ μλν°κ° ν΄κ²°ν΄ μ€ μ μλ κ²½μ°
μ΄ κ²½μ° μλν°κ° μ΅λ (M - μΈκ·κ° μ΄λ―Έ ν΄κ²°ν μ€λ₯μ μ) λ§νΌμ μ€λ₯λ₯Ό ν΄κ²°ν΄μΌνλ€.
μ¦, μΈκ·κ° Yκ°λ₯Ό μ΄κ³Όν΄ μ€λ₯λ₯Ό μμ ν΄μΌνλλ° κ·Έ μ€μμλ μ΅λν μ κ² μ€λ₯λ₯Ό μμ ν΄μΌνλ€.
1λ²μ κ²½μ°μλ μ λ ₯μ λ°μ νμ λ°λ‘ νλ³ν΄μ£Όμλ€. μ£Όμ΄μ§ λ μ€λ₯ μ¬μ΄μ κ°κ²©μ κ³μ°ν΄
κ·Έ μ€μ μ΅λ κΈΈμ΄λ₯Ό μ°Ύμμ νλ³ν΄μ£Όλ©΄ λλ€.
1λ²μ κ²½μ°κ° μλλΌλ©΄ μΈκ·κ° λ°λμ μμ λμΌνλ κ²½μ°μ μ΅μ λͺ κ°μ μ€λ₯λ₯Ό ν΄κ²°ν΄μΌ
μ΄νμ μλν°κ° μλμΌλ‘ ν΄κ²°ν΄μ€μ§λ₯Ό κ³μ°ν΄μΌνλ€. μ€λ₯μλ μ°μλ μ½λ μ€ μκ° Xμ€λ§ μμΌλ©΄ λλ€.
Xκ° 3μ΄λΌκ³ κ°μ νμ
1~3, 4~6, 7~9 ... N-2 ~ N μΌλ‘ λ²μλ₯Ό λλμ΄μ λ²μμμ μ€λ₯ κ°μ μ€ μ΅μλ₯Ό μ°ΎμΌλ©΄ λλ€.
κ·Έλ κ² μ½λλ₯Ό μμ±ν΄λ³΄λ©΄
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <stack>
#include <vector>
#include <math.h>
#include <queue>
#include <climits>
#include <algorithm>
#include <map>
#define mod 1000000007
using namespace std;
typedef long long ll;
const int INF = INT_MAX;
const int MAX_N = 20000000 + 5;
int N, M, X, Y;
bool Error[MAX_N];
vector<int> Error_num;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> N >> M;
int MAX_gap = 0;
for (int i = 0; i < M; i++) {
int a; cin >> a;
Error[a] = true;
Error_num.push_back(a);
if (!i) MAX_gap = max(a - 1, MAX_gap);
else MAX_gap = max(MAX_gap, a - (Error_num[i - 1] + 1));
if (i == M - 1) {
MAX_gap = max(MAX_gap, N - a);
}
}
cin >> X >> Y;
if (MAX_gap >= X) {
cout << M - Y << "\n";
return 0;
}
int cnt = 0;
for (int j = 1; j < 1 + X; j++) {
if (Error[j])
cnt++;
}
int Min_Error = cnt;
for (int i = 2; i <= N - X + 1; i++) {
if (Error[i - 1])
cnt--;
if (Error[i + X - 1])
cnt++;
Min_Error = min(cnt, Min_Error);
if (Min_Error < Y)
break;
}
if (Min_Error < Y)
cout << M - Y << "\n";
else cout << M - Min_Error << "\n";
return 0;
}
|
cs |
μ¬κΈ°μ λ²μλ΄μ μλ¬ μλ₯Ό μ°Ύμ λ
λ§€λ² λ°λ³΅λ¬Έμ λλ©΄μ κ°μλ₯Ό μΈλ©΄ μκ°μ νμ΄ 0.6μ΄λ°μ μλΌμ μκ°μ΄κ³Όκ° λλ€.
1~3 κΉμ§λ λ°λ³΅λ¬ΈμΌλ‘ κ°μλ₯Ό μΈμ£Όκ³ cnt λ³μμ μ μ₯νλ€.
λ€μ 2~4 κΉμ§ μ λλ μμ 1~3 λ²μμ 2,3μ΄ κ²ΉμΉλ€.
κ·Έλμ 1λ²μ€μ μλ¬κ° μμλ€λ©΄ μΌλ¨ cnt-1μ ν΄μ£Όκ³ 4λ²μ€μ μλ¬κ° μλ€λ©΄ cnt+1μ ν΄μ£Όλ©΄λλ€.
κ·ΈλΌ λ§€λ² λ°λ³΅λ¬Έμ λμ§μκ³ λ λ²μ λ΄ μ€λ₯μ μλ₯Ό κ³μ°ν μ μλ€.
'λ°±μ€ > Gold' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] 13460 : κ΅¬μ¬ νμΆ 2 (0) | 2022.02.22 |
---|---|
[BOJ] 3665 : μ΅μ’ μμ (0) | 2022.02.21 |
[BOJ] 24462 : μΌμ΄λ...μ½λ©ν΄μΌμ§... (0) | 2022.02.14 |
[BOJ] 4195 : μΉκ΅¬ λ€νΈμν¬ (0) | 2022.02.11 |
[BOJ] 1167 : νΈλ¦¬μ μ§λ¦ (0) | 2022.02.09 |