[白俊]10025号:怠け者の白熊
回答日:2021年10月06日
質問する
題では、与えられた最大サイズの配列が宣言され、氷の位置に値が入力される. シロクマアルバートは、着席場所の左右にKを1つずつ食べて、最初の2*Kを覆うことができると言った. から配列の値を追加し、2*K+1からインデックスの最低位置の値を減算し、次の値を追加します.このとき、もう1つの値の最値を更新します. コード#コード#
質問する
質問リンク:https://www.acmicpc.net/problem/10025
アクセスと解析
これはスライドウィンドウアルゴリズムを用いた問題である.
コードは以下のように実現された.
これはスライドウィンドウアルゴリズムを用いた問題である.
コードは以下のように実現された.
コード#コード# // 백준 10025번 : 게으른 백곰
#include <iostream>
using namespace std;
int N, K, ans;
int arr[1000001];
int main() {
cin >> N >> K;
for (int i = 0; i < N; i++) {
int g, x;
cin >> g >> x;
arr[x] = g;
}
K = 2 * K + 1;
int sum = 0;
for (int i = 0; i <= 1000001; i++) {
if (i >= K) {
sum -= arr[i - K];
}
sum += arr[i];
ans = max(ans, sum);
}
cout << ans;
return 0;
}
結果
フィードバック
いつでも入力値の範囲をよくチェックし、実施します.
Reference
この問題について([白俊]10025号:怠け者の白熊), 我々は、より多くの情報をここで見つけました
https://velog.io/@bestcoders/백준-10025번-게으른-백곰
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 백준 10025번 : 게으른 백곰
#include <iostream>
using namespace std;
int N, K, ans;
int arr[1000001];
int main() {
cin >> N >> K;
for (int i = 0; i < N; i++) {
int g, x;
cin >> g >> x;
arr[x] = g;
}
K = 2 * K + 1;
int sum = 0;
for (int i = 0; i <= 1000001; i++) {
if (i >= K) {
sum -= arr[i - K];
}
sum += arr[i];
ans = max(ans, sum);
}
cout << ans;
return 0;
}
フィードバック
いつでも入力値の範囲をよくチェックし、実施します.
Reference
この問題について([白俊]10025号:怠け者の白熊), 我々は、より多くの情報をここで見つけました
https://velog.io/@bestcoders/백준-10025번-게으른-백곰
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([白俊]10025号:怠け者の白熊), 我々は、より多くの情報をここで見つけました https://velog.io/@bestcoders/백준-10025번-게으른-백곰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol