最初の学生に割り当てることができる最大スコアを見つけるためのC++コード
n個の要素と数mの配列Aがあるとします。アネクサムをしている学生はn人います。最高のスコアはmです。 A[i]はi番目の生徒のスコアです。各学生のスコアを操作することはできますが、条件が満たされている必要があります。スコアはmを超えることはなく、すべてのスコアは整数であり、すべての生徒の平均点は変わりません。一人称のスコアを最大化したい場合、私たちが与えることができる最高のスコアは何になりますか。
したがって、入力がA =[1、2、3、4]のような場合; m =10の場合、出力は10になります。平均が2.5であるため、スコア[10、0、0、0]を設定できます。ここで、平均は同じですが、最初のスコアは最大です。
ステップ
これを解決するには、次の手順に従います-
sum := 0 n := size of A for initialize j := 0, when j < n, update (increase j by 1), do: sum := sum + A[j] return minimum of m and sum
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int m){ int sum = 0; int n = A.size(); for (int j = 0; j < n; j++){ sum += A[j]; } return min(m, sum); } int main(){ vector<int> A = { 1, 2, 3, 4 }; int m = 10; cout << solve(A, m) << endl; }
入力
{ 1, 2, 3, 4 }, 10
出力
10
-
グラフから減らすことができるスコアの最大量を見つけるためのC++プログラム
n個の頂点とm個のエッジを持つ重み付きの無向グラフがあるとします。グラフのスコアは、グラフ内のすべてのエッジの重みの加算として定義されます。エッジの重みは負の値になる可能性があり、それらを削除するとグラフのスコアが増加します。グラフを接続したまま、グラフからエッジを削除して、グラフのスコアを最小にする必要があります。減らすことができるスコアの最大量を見つける必要があります。 グラフは配列edgesで与えられ、各要素は{weight、{vertex1、vertex2}}の形式です。 したがって、入力がn =5、m =6、edges ={{2、{1、2}}、{2、{1、3}}、{1、{2、3}
-
nがC++でk個の数の積として記述できるかどうかを調べます
数Nがあるとします。別の数kがあります。数がk個の数を使用して表現できるかどうかを確認する必要があります。数値54、k =3とすると、[2、3、9]のような数値が出力されます。表現できない場合は、それを出力します。 これを解決するために、Nのすべての素因数を見つけてベクトルに格納し、1より大きいk個の数を見つけるために、ベクトルのサイズがkより大きいかどうかを確認します。サイズがk未満の場合は、-1を返します。それ以外の場合は、最初のk-1の因数を出力し、最後の因数は残りのすべての数値の積になります。 例 #include<iostream> #include<vector