[BOJ]14241-スライムをマージ
https://www.acmicpc.net/problem/14241
質問する
英善と孝彬は水晶の泥を合わせるゲームをしている.二人は水晶泥を二つ選んで一つにしなければならない.ゲームはまだスライムが1つ残っている間に終わります.
すべての水晶泥には正数の大きさがある.2つのスライムxとyを加算すると,合成したスライムの大きさはx+yであった.また、スライムを加えるたびに、二人はx*y点を得る.
英善と孝彬が得られる点数の最値を求めるプログラムを作成してください.
入力
第1行は斜線の個数N(2≦N≦100)を与える.
2行目はスライムの大きさを示した.サイズが100以下の自然数.
しゅつりょく
1行目は英善と孝彬が得られる点数の最値を印刷した.
サンプルI/O
入力例1 例出力1 例2 例出力2 例3 例出力3 例4 例出力4
上の2つを一緒に置いて、キューのデータが1つ残るまで入れ続けます.
たまにBOJの問題レベルを見ると、実現が難しいよりも、知識が分からないと解けないほうが近いです.逆に個人的な面では実施しにくい.
質問する
英善と孝彬は水晶の泥を合わせるゲームをしている.二人は水晶泥を二つ選んで一つにしなければならない.ゲームはまだスライムが1つ残っている間に終わります.
すべての水晶泥には正数の大きさがある.2つのスライムxとyを加算すると,合成したスライムの大きさはx+yであった.また、スライムを加えるたびに、二人はx*y点を得る.
英善と孝彬が得られる点数の最値を求めるプログラムを作成してください.
入力
第1行は斜線の個数N(2≦N≦100)を与える.
2行目はスライムの大きさを示した.サイズが100以下の自然数.
しゅつりょく
1行目は英善と孝彬が得られる点数の最値を印刷した.
サンプルI/O
入力
2
3 4
12
入力3
2 2 2
12
入力3
1 2 3
11
入力3
3 1 2
11
Solution#include <iostream>
#include <queue>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
queue<int> Q;
int N;
int score = 0;
cin >> N;
for(int i = 0; i < N; i++){
int input;
cin >> input;
Q.push(input);
}
while(Q.size() > 1){
int first = Q.front();
Q.pop();
int second = Q.front();
Q.pop();
score += first * second;
Q.push(first + second);
}
cout << score << '\n';
}
Qの問題をうまく利用しなければならない上の2つを一緒に置いて、キューのデータが1つ残るまで入れ続けます.
たまにBOJの問題レベルを見ると、実現が難しいよりも、知識が分からないと解けないほうが近いです.逆に個人的な面では実施しにくい.
Reference
この問題について([BOJ]14241-スライムをマージ), 我々は、より多くの情報をここで見つけました https://velog.io/@sierra9707/BOJ-14241-슬라임-합치기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol