BOJ-11058キーボード(C++)
5741 ワード
質問元:https://www.acmicpc.net/problem/11058
Silver 1
1番以外は2~3番がセットで、4番の時に元のバッファに追加できます.
1)ボタンを押す前のA個数+1
2)十分であれば、4回押す前に2,3回、3回押す前にA個をx 2個とすることができます->ウィンドウ全体のA個をコピーするので、もう一度4回押して追加します.
3)2、3、4回クリック前の画面Aの数をコピーして2回ペーストすると、2、3、4、4回クリック前の(i-4)のペーストは2回で、画面のAは3回→i-4×3個繰り返すことができる
4)2、3、4、4、4ボタン前(i-5)を押すと、貼り付けは3回->i-5 x 4個となります
注意:long longデータ型を使用する必要があります
maxアルゴリズム関数に{}を置いて複数のパラメータを比較できることを初めて知りました!違う時にも使えます
問題の難易度
Silver 1
問題の処理方法
1番以外は2~3番がセットで、4番の時に元のバッファに追加できます.
1)ボタンを押す前のA個数+1
2)十分であれば、4回押す前に2,3回、3回押す前にA個をx 2個とすることができます->ウィンドウ全体のA個をコピーするので、もう一度4回押して追加します.
3)2、3、4回クリック前の画面Aの数をコピーして2回ペーストすると、2、3、4、4回クリック前の(i-4)のペーストは2回で、画面のAは3回→i-4×3個繰り返すことができる
4)2、3、4、4、4ボタン前(i-5)を押すと、貼り付けは3回->i-5 x 4個となります
注意:long longデータ型を使用する必要があります
パスコード
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#define INF 987654321
#define MAX 1000001
using namespace std;
long long dp[101];
int main() {
int N;
cin >> N;
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
dp[4] = 4;
dp[5] = 5;
dp[6] = 6;
for (int i = 7; i <= N; i++) {
dp[i] = max({dp[i-1]+1, dp[i-3]*2, dp[i-4]*3,dp[i-5]*4});
}
cout << dp[N];
return 0;
}
フィードバック
maxアルゴリズム関数に{}を置いて複数のパラメータを比較できることを初めて知りました!違う時にも使えます
Reference
この問題について(BOJ-11058キーボード(C++)), 我々は、より多くの情報をここで見つけました https://velog.io/@woga1999/BOJ-11058번-크리보드Cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol