\ # 우 객 망 2018 년 우 객 다 교 알고리즘 겨울방학 훈련소 연습 경기 (제4 회) 도 론 + 지도 검색 문제 풀이
19649 단어 소달구지
제목 설명
해상 운송 u 의 석유 유출 문제 에 따라 새로운 이익 이 있 는 업계 가 탄생 하고 있 는데 그것 이 바로 기름 을 버 리 는 업계 이다.현재 멕시코 만 에 떠 다 니 는 대량의 석유 가 많은 상인 들 의 눈길 을 끌 고 있다.이 상인 들 은 해수면 전 체 를 20 미터 건 너 10 미터 정도 되 는 긴 사각형 을 탈 수 있 는 특별한 비행 기 를 가지 고 있다.(상하 가 인접 하거나 좌우 가 인접 한 칸 은 기울 여 서 는 안 된다) 물론 한 바 가 지 를 버 리 는 것 은 모두 기름 이다. 한 바 가 지 는 기름 에 물이 있 으 면 의미 가 없고 자원 을 이용 할 수 없다.지금 상인 들 은 이 지역 에서 기름 을 얼마나 많이 얻 을 수 있 는 지 알 고 싶 어 한다.
N×N , 10m×10m ,
입력 설명:
T(T<75)
N(N<50) , N , N , ’.’ 、 ’#’ 。
출력 설명:
“Case X: M”(X 1 ),M 。
예시 1
입력
1
6
......
.##...
......
.#..#.
.#..##
......
출력
Case 1: 3
제목: 두 개의 인접 한 칸 을 연속 으로 1 바가지 크기 로 하고, 기름 을 가 져 간 후 남 은 두 조각 은 해수면 에서 취 할 수 없 는 것 이 되 며, 수출 은 최대 몇 바 가 지 를 취 할 수 있 습 니까?
사고: 연결 블록 문제 와 유사 하 게 하 나 를 홀수 점 으로 설정 하고 하 나 를 짝수 점 으로 설정 하 며 '\ #' 에 부 딪 힐 때마다 지 도 를 검색 하고 검색 한 곳 을 '' 로 설정 합 니 다. 매번 홀수 점 과 짝수 점 의 최소 값 의 합 을 더 하면 답 입 니 다.
AC 코드:
#include
using namespace std;
const int maxn = 1e2 + 5;
char p[maxn][maxn];
int n, m, odd, even, T, X;
int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
void dfs(int x, int y, int step) {
if (step & 1) even++;
else odd++;
for (int i = 0; i < 4; i++) {
int xx = dir[i][0] + x;
int yy = dir[i][1] + y;
if (xx >= 0 && yy >= 0 && xx < n && yy < n && p[xx][yy] == '#') {
p[xx][yy] = '.';
dfs(xx, yy, step + 1);
}
}
}
int main()
{
cin >> T;
while (T--) {
cin >> n;
int ans = 0;
for (int i = 0; i < n; i++) cin >> p[i];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (p[i][j] == '#') {
odd = even = 0;
p[i][j] = '.';
dfs (i, j, 0);
ans += min (odd, even);
}
}
}
cout << "Case " << ++X << ": ";
cout << ans << endl;
}
return 0;
}
B - 도로 건설
제목 설명
현재 사회의 변화 에 따라 교통 문제 도 점점 중요 해 지기 때문에 시장 은 각 도시 간 의 무역 과 거래 를 편리 하 게 하기 위해 도 로 를 건설 하기 로 결정 했다.시장의 생각 은 좋 지만 일반인 들 도 자주 골 치 아 픈 문제 에 부 딪 혔 다. 그것 은 바로 수중 에 있 는 경비 가 제한 되 어 있다 는 것 이다. 계획 과정 에서 디자이너 들 은 일부 도시 간 에 도 로 를 건설 하 는 경비 수 요 를 예산 해 냈 다.현재 시장 은 그것 이 그의 m 개 도 시 를 제 한 된 경비 내 에서 도로 교통 을 실현 할 수 있 는 지 궁금 하 다.가능 하 다 면 Yes 를 출력 하 십시오. 그렇지 않 으 면 No 를 출력 합 니 다.
입력 설명:
1 c(<1000000), n(n<10000), m(<100)。
n , , v1、v2(0
출력 설명:
, Yes No。
예시 1
입력
20 10 5
1 2 6
1 3 3
1 4 4
1 5 5
2 3 7
2 4 7
2 5 8
3 4 6
3 5 9
4 5 2
출력
Yes
예시 2
입력
10 2 2
1 2 5
1 2 15
출력
Yes
비고:
사고: 누 드 의 최소 생 성 트 리 입 니 다. 저 는 크 루 스 칼 알고리즘 을 사용 합 니 다. 매번 가장 짧 은 변 을 찾 을 때마다 새로 추 가 된 두 점 이 집합 에 가입 하지 않 았 는 지, 추가 하 는 지, 건 너 뛰 는 지, 마지막 으로 가중치 가 일치 하 는 지 확인 하 겠 습 니 다.
AC 코드:
#include
using namespace std;
const int maxn = 1e4 + 5;
struct node
{
int u, v, w;
}e[maxn];
bool cmp (node a, node b) {
return a.w < b.w;
}
int p[maxn], n, m, c, ans, K;
void init() {
memset(e, 0, sizeof(e));
for (int i = 1; i <= n; i++) p[i] = i;
ans = K = 0;
}
int find_(int x) {
while (x != p[x]) x = p[x] = p[p[x]];
return x;
}
void unite(int x, int y) {
x = find_(x);
y = find_(y);
if (x != y) p[x] = y;
}
int main()
{
while (cin >> c >> m >> n) {
init();
for (int i = 0; i < m; i++)
cin >> e[i].u >> e[i].v >> e[i].w;
sort (e, e + m, cmp);
for (int i = 0; i < m; i++) {
if (K == n - 1) break;
if (find_(e[i].u) != find_(e[i].v)) {
unite(e[i].u, e[i].v);
ans += e[i].w;
K++;
}
}
if (K == n - 1 && ans <= c) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
C - 교차
제목 설명
, 。
입력 설명:
, 。
:
n,m(0
출력 설명:
( ), "empty"。
예시 1
입력
2 3
1 3
1 2 3
출력
1 3
비고:
, "empty"
。
제목 대의: 두 집합의 공공 요 소 를 구하 다
사고방식: 이분법 으로 순서대로 찾 으 면 됩 니 다. lower 로bound 가 제출 하면 TLE 가 될 수 있 습 니 다. 직접 손 으로 쓰 면 지나 갑 니 다.
AC 코드:
#include
using namespace std;
const int maxn = 1e6 + 5;
int p[maxn], s[maxn], n, m;
int main()
{
while (~scanf("%d%d", &n, &m)) {
bool flag = 0;
for (int i = 0; i < n; i++) scanf("%d", &p[i]);
for (int i = 0; i < m; i++) scanf("%d", &s[i]);
for (int i = 0; i < n; i++) {
int l = 0, r = m - 1, mid;
while (l <= r) {
mid = (l + r) >> 1;
if (s[mid] > p[i]) r = mid - 1;
else if (s[mid] < p[i]) l = mid + 1;
if (s[mid] == p[i]) {flag = 1; break;}
}
if (flag) cout << p[i] << " ";
}
if (flag) cout << endl;
else cout << "empty" << endl;
}
return 0;
}
D - 샤 오 밍 의 광산 발굴 여행
제목 설명
n*m , 。 。 , , 。 , 。 , , 。 , 。 , 。 , 。
입력 설명:
。
:
n m(0
출력 설명:
。 , 。
예시 1
입력
3 3
...
.#.
...
출력
1
사고: 제목 의 뜻 을 이해 하지 못 했 습 니 다. 다른 사람의 설명 을 보면 첫 번 째 점 에서 직접 검색 하 는 것 이 라 고 합 니 다. 장애 에 부 딪 히 면 + 1 (QAQ 는 정말 모 르 겠 습 니 다)
AC 코드:
#include
using namespace std;
char mp[1004][1004];
int main()
{
int n, m, i, j;
while(~scanf("%d%d", &m, &n))
{
int ans = 0, sum = 0;
for(i = 0; i < m; i++) scanf("%s", mp[i]);
for(i = 0; i < m ; i++)
for(j = 0; j < n; j++)
{
if(mp[i][j] == '.')
{
sum++;
if((mp[i+1][j] == '#' || i == m-1) && (mp[i][j+1] == '#' || j == n-1))
ans++;
}
}
if(sum == 1) ans = 0;
printf("%d
", ans);
}
return 0;
}
E - 동생 에 게 알 리 기
제목 설명
전쟁 시기 에 A 국 은 많은 간첩 을 다른 나라 에 보 내 정 보 를 수집 했다.스파이 는 자신의 신분 을 비밀 로 해 야 하기 때문에 그들 사 이 는 일방적인 관계 일 뿐이다.그래서 어떤 스파이 는 일부 스파이 에 게 만 연락 할 수 있다.스파이 도 그 와 연락 한 사람 이 누 군지 모른다.HA 는 스파이 들 의 맏형 이지 만, 그 역시 일부 스파이 에 게 만 연락 할 수 있 었 다.하 는 지금 모든 스파이 에 게 알 리 라 는 명령 이 있 습 니 다.하 는 그 가 연락 할 수 있 는 스파이 를 몇 명 이라도 알려 줘 야 모든 스파이 에 게 알 릴 수 있 는 지 알 고 싶 어 한다.
입력 설명:
。
:
n,m(0
출력 설명:
, , HA 。 HA , -1。
예시 1
입력
3 2
1 2
1 2
1 1
0
출력
-1
예시 2
입력
3 1
1
2 2 3
0
0
출력
1
제목: 당신 이 알 릴 수 있 는 사람 을 입력 하고 방향 도 를 입력 하 세 요. U V 는 U 가 V 에 연락 할 수 있 음 을 표시 합 니 다. 출력 은 최소 몇 명 에 게 알려 야 모든 사람 에 게 알려 줄 수 있 습 니까? 모든 사람 에 게 알 리 지 못 하면 출력 - 1
사고: 먼저 줄 이 고 새 그림 에서 입 도 를 0 으로 하 는 점 을 찾 습 니 다. 입 도 는 0 이기 때문에 '알려 져 야 합 니 다'. 모든 입 도 를 0 으로 하 는 점 이 처음에 입력 한 숫자 에 있 는 지 확인 하고 알 리 지 못 하 는 것 이 있 으 면 출력 - 1
AC 코드:
#include
using namespace std;
const int maxn = 1e6 + 5;
struct node
{
int v, next;
}e[maxn];
int dfn[maxn], low[maxn], in[maxn], n, m, t, vi;
int head[maxn], suo[maxn], pre[maxn], cnt, tot, scnt;
bool vis[maxn];
stack st;
map mp;
void init() {
memset(in, 0, sizeof(in));
memset(vis, 0, sizeof(vis));
memset(dfn, 0, sizeof(dfn));
memset(low, 0, sizeof(low));
memset(suo, 0, sizeof(suo));
memset(head, -1, sizeof(head));
tot = scnt = cnt = 0;
}
void add (int from, int to) {
e[++cnt].v = to;
e[cnt].next = head[from];
head[from] = cnt;
}
void tarjan(int x) {
dfn[x] = low[x] = ++tot;
st.push(x);
vis[x] = 1;
for (int i = head[x]; i != -1; i = e[i].next) {
int v = e[i].v;
if (!dfn[v]) {
tarjan(v);
low[x] = min (low[x], low[v]);
}
else if (vis[v]) low[x] = min (low[x], dfn[v]);
}
if (dfn[x] == low[x]) {
scnt++;
int k;
do {
k = st.top();
st.pop();
suo[k] = scnt;
vis[k] = 0;
}
while (k != x);
}
}
int main()
{
while (cin >> n >> m) {
init();
for (int i = 0; i < m; i++) {
cin >> t;
mp[t]++; //
}
for (int i = 1; i <= n; i++) {
cin >> t;
while (t--) {
cin >> vi;
add (i, vi); //
}
}
for (int i = 1; i <= n; i++) {
if (!dfn[i]) tarjan(i);
}
for (int i = 1; i <= n; i++) {
for (int j = head[i]; j != -1; j = e[j].next) {
int u = suo[i], v = suo[e[j].v];
if (u != v) in[v]++; //
}
}
int ans = 0, flag = 1;
for (int i = 1; i <= scnt; i++) {
if (!in[i]) {
bool ma = 0;
for (auto it : mp) {
if (suo[it.first] == i) {ma = 1; break;}
}
if (ma) ans++;
else {flag = 0; break;} // -1
}
}
if (!flag) cout << -1 << endl;
else cout << ans << endl;
mp.clear(); //
}
return 0;
}
F-Call to your teacher
제목 설명
실험실 에서 나 온 후, 너 는 갑자기 자신의 컴퓨터 를 실험실 에 두 고 온 것 을 발견 하 였 으 나, 실험실 의 선생님 은 이미 대문 을 잠 갔다.더 나 쁜 것 은 네가 그 선생님 의 전화번호 가 없다 는 것 이다.당신 은 당신 이 아 는 모든 사람 에 게 전 화 를 걸 어 선생님 의 전화 가 있 는 지 물 어보 기 시 작 했 습 니 다. 없 으 면 그들 도 자신의 학우 에 게 전화 번 호 를 물 어 볼 것 입 니 다.그럼 선생님 께 연락 해서 컴퓨터 를 받 을 수 있 습 니까?
입력 설명:
n(1
출력 설명:
, , “Yes”, “No”。
예시 1
입력
5 5
1 3
2 3
3 4
2 4
4 5
출력
Yes
예시 2
입력
4 3
1 2
2 3
4 1
출력
No
제목: 당신 의 번 호 는 1 이 고 선생님 의 번 호 는 N 입 니 다. 도표 에 U 를 표시 하 는 것 을 입력 하 십시오. 통지 할 수 있다 V, 1 부터 N 까지 가능 한 지 물 어보 세 요.
사고방식: 직접 dijkstra 를 한 번 걸 어가 서 1 부터 N 까지 길이 있 는 지 확인 하면 됩 니 다.
AC 코드:
#include
using namespace std;
const int maxn = 1e4 + 5;
const int INF = 0x3f3f3f3f;
struct node
{
int v, w, next;
}e[maxn];
struct edge
{
int id, w;
bool operator < (const edge &oth) const
{
return w > oth.w;
}
}mid;
int head[maxn], dis[maxn], n, m, cnt;
priority_queue q;
void init() {
memset(e, 0, sizeof(e));
memset(head, -1, sizeof(head));
cnt = 0;
}
void add (int from, int to, int dis) {
e[++cnt].v = to;
e[cnt].w = dis;
e[cnt].next = head[from];
head[from] = cnt;
}
void dijkstra(int u) {
memset(dis, INF, sizeof(dis));
dis[u] = 0;
q.push({u, 0});
while (!q.empty()) {
mid = q.top();
q.pop();
int ans = mid.id;
if (mid.w != dis[ans]) continue;
for (int i = head[ans]; i != -1; i = e[i].next) {
if (dis[e[i].v] > dis[ans] + e[i].w) {
dis[e[i].v] = dis[ans] + e[i].w;
q.push({e[i].v, dis[e[i].v]});
}
}
}
}
int main()
{
while (cin >> n >> m) {
init();
for (int i = 0; i < m; i++) {
int ui, vi;
cin >> ui >> vi;
add (ui, vi, 1);
}
dijkstra(1);
if (dis[n] != INF) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
G - 노자 의 이탈리아 포 네요.
제목 설명
태원 현성 을 공격 한 후 이 운 룡 이라는 이탈리아 포 는 더욱 순조롭게 사용 되 었 다. 어디 를 때 려 도 결코 모호 하지 않다 는 뜻 이다. 그래서 소 야 대장 은 독립 단 포병 영 을 미 친 듯 이 공격 하기 시작 했다. 병사 들 이 이탈리아 포 를 이동 하 는 능력 을 단련 하기 위해 이 단장 은 포병 영 에 특 훈 을 실시 하기 시작 했다.포탄 세 부분 으로 이 뤄 져 현재 이 단장 은 양 촌 에 진 지 를 두 고 각각 포신, 바퀴, 포탄 을 세 곳 에 두 고 있 으 며, 각 부분의 무게 가 다 르 기 때문에 수송 속도 도 다르다.단장 은 누가 이 태 리 포 를 가장 빨리 조립 해서 내 앞 에 운반 할 수 있 는 능력 이 있 습 니까? 아버 지 는 그 에 게 고구마 반 근 을 주 셨 습 니 다. 스님 은 듣 고 기뻐 하 셨 습 니 다. 그런데 그 는 어떻게 해 야 시간 을 가장 빨리 할 수 있 는 지 모 르 겠 습 니 다. 당신 이 그 를 도와 줄 수 있 습 니까? 라 고 말 했다.
부품 을 들 기만 하면 내 려 놓 을 수 없 기 때문에 a 시 에 들 수 없다. b 시 에 내 려 놓 고 다른 부품 을 찾 으 러 가자.기본 스님 은 1 초 에 한 단위 의 거 리 를 걷 고 상하 좌우 네 방향 으로 만 갈 수 있 습 니 다. 만약 에 스님 이 지금 포신 을 들 고 있다 고 가정 하면 그 는 한 단위 의 거 리 를 걸 을 때마다 (t1 + 1) 초 가 필요 합 니 다. 만약 에 바퀴 를 들 면 그 는 지금 한 걸음 걸 을 때마다 (t1 + t2 + 1) 초 의 시간 이 필요 합 니 다. 이런 식 으로 유추 합 니 다.점 은 반복 해서 지나 갈 수 있 고 부품 이 있 는 점 을 지나 갈 때 가 져 가 거나 안 가 져 가 는 것 을 선택 할 수 있 습 니 다.
입력 설명:
n, m ,(1<=n, m <= 100); n m ‘#’ ‘.’ ,’#’ ,’.’ , , ( ), 。 , 10 sx,sy,x1, y1, x2, y2, x3, y3, ex, ed( 100) , , , , , ( ), 。 t1, t2, t3,( 1, 100), , , 。 。
출력 설명:
, 。 。
예시 1
입력
3 5
##.##
.#.#.
##.##
1 3 2 1 2 3 2 5 3 3
1 5 4
출력
34
설명 하 다.
, 2 , : ->1 –> 3 -> 2 ->
(1,3),(2,3),(2,2),(2,1),(2,2),(2,3),(2,4),(2,5),(2,4),(2,3),(3,3)。
34。
제목: 세 개의 부품 이 있 고, 각 부품 은 각자 의 무게 가 있 으 며, 하 나 를 가지 고 있 지 않 을 때 한 단 위 를 가 는 데 한 단위 의 시간 이 걸 리 며, 부품 을 담 은 후 걸 리 는 시간 에 이 부품 의 무 게 를 더 해 야 하 며, 세 개의 부품 을 모두 몸 에 담 을 때 는 안 되 며, 가장 짧 은 목표 에 도달 하 는 시간 을 출력 해 야 한다.
사고방식: 부품 이 비교적 적기 때문에 나 는 매 거 + BFS 를 이용 하여 부품 1, 부품 2, 부품 3 사 이 를 모두 배열 하여 표시 하 는데 6 개의 상황 만 있 고 그 다음 에 처음부터 끝까지 의 거 리 를 더 하면 OK 이다
AC 코드:
#include
using namespace std;
const int maxn = 1e2 + 5;
const int INF = 0x3f3f3f3f;
struct node
{
int x, y, step;
};
char p[maxn][maxn];
int n, m, x1, yy, x2, y2, x3, y3;
int sx, sy, ex, ey, t1, t2, t3;
int s1, s2, s3, s4, min_ = INF;
int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
bool vis[maxn][maxn];
bool check (int x, int y, int v) {
if (v != t1 + t2 + t3) {
if (x > 0 && y > 0 && x <= n && y <= m && !vis[x][y]) return true;
else return false;
}
else { //
if (x > 0 && y > 0 && x <= n && y <= m && !vis[x][y] && p[x][y] != '#') return true;
else return false;
}
}
int bfs(int x, int y, int px, int py, int val) { //val
queue q;
q.push({x, y, 0});
memset(vis, 0, sizeof(vis));
while (!q.empty()) {
node now = q.front();
q.pop();
if (now.x == px && now.y == py) return now.step;
for (int i = 0; i < 4; i++) {
int xx = now.x + dir[i][0];
int yy = now.y + dir[i][1];
if (check (xx, yy, val)) {
vis[xx][yy] = 1;
q.push({xx, yy, now.step + val + 1});
}
}
}
return INF;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++) {
getchar();
for (int j = 1; j <= m; j++) scanf("%c", &p[i][j]);
}
cin >> sx >> sy >> x1 >> yy >> x2 >> y2 >> x3 >> y3 >> ex >> ey;
cin >> t1 >> t2 >> t3;
s1 = bfs(sx, sy, x1, yy, 0);
s2 = bfs(x1, yy, x2, y2, t1);
s3 = bfs(x2, y2, x3, y3, t1 + t2);
s4 = bfs(x3, y3, ex, ey, t1 + t2 + t3); // , 。。
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
s2 = bfs(x1, yy, x3, y3, t1);
s3 = bfs(x3, y3, x2, y2, t1 + t3);
s4 = bfs(x2, y2, ex, ey, t1 + t2 + t3);
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
s1 = bfs(sx, sy, x2, y2, 0);
s2 = bfs(x2, y2, x1, yy, t2);
s3 = bfs(x1, yy, x3, y3, t2 + t1);
s4 = bfs(x3, y3, ex, ey, t1 + t2 + t3);
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
s2 = bfs(x2, y2, x3, y3, t2);
s3 = bfs(x3, y3, x1, yy, t2 + t3);
s4 = bfs(x1, yy, ex, ey, t1 + t2 + t3);
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
s1 = bfs(sx, sy, x3, y3, 0);
s2 = bfs(x3, y3, x1, yy, t3);
s3 = bfs(x1, yy, x2, y2, t1 + t3);
s4 = bfs(x2, y2, ex, ey, t1 + t2 + t3);
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
s2 = bfs(x3, y3, x2, y2, t3);
s3 = bfs(x2, y2, x1, yy, t3 + t2);
s4 = bfs(x1, yy, ex, ey, t1 + t2 + t3);
if (s1 != INF && s2 != INF && s3 != INF && s4 != INF) min_ = min (min_, s1 + s2 + s3 + s4);
cout << min_ << endl;
return 0;
}
H. - 노자 의 전열 이 네요.
제목 설명
이 씨 는 스님 이 자신의 술 을 이 긴 것 을 보 았 지만 자신 이 아까워 서 뻔뻔 하 게 놀 았 다. 스님 에 게 '광 무 는 안 돼. 문 좀 더 해 줘. 1 - 8 의 순 서 를 다 말 해 주면 내 가 마 시 게 해 줄 게. 이번 에는 절대로 너 를 놀 리 지 않 을 거 야. 너 는 스님 을 도와 줄 수 있 니?' 라 고 말 했다.
입력 설명:
출력 설명:
1~8 , , 。
예시 1
입력
No_Input
출력
Full arrangement of 1~8
비고:
1~3 :
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
AC 코드:
#include
using namespace std;
int p[10] = {1, 2, 3, 4, 5, 6, 7, 8};
int main()
{
do {
for (int i = 0; i < 7; i++) cout << p[i] << " ";
cout << p[7] << endl;
}
while (next_permutation (p, p + 8));
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2 단 대기 열 문제 풀이이 문제 의 가장 직접적인 해법 은 모든 미끄럼 창 을 직접 옮 겨 다 니 며 각 창의 최대 치 를 찾 으 면 된다.모두 N - k + 1 개의 미끄럼 창 이 있 고 미끄럼 창 마다 k 개의 요소 가 있 기 때문에 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.