【質問解】CSP-Xiaoming種のリンゴ(線形テーブル)

記事のディレクトリ

トピックリンク

アルゴリズムのアイデア

質問の意味によると、2列目から始まる各列の後ろには、2列目から始まるまばらな果実の総数だけが必要であり、全体として扱うのが良いでしょう。サイズを比較してPとkを計算する場合にのみ必要です。Tに関しては、さらに簡単です。以下のすべてのデータを合計するだけです。
実際、線形テーブル構造は必要ありません。データを読み取るたびに計算するのは非常に便利です。

#include<iostream>
using namespace std;
//小明种苹果
long long int N, M, m; //我就不懂了,只是把这行从 "int" 换成 "long long int",就从0分跳到了100分
long long int T = 0, k = 1, P = 0;
long long int apple_initial = 0, apple_cut = 0, apple_end = 0;
//apple_initial 初始苹果数,apple_cut 疏果数(cut < 0), apple_end 最后剩余苹果数
int main()
{
	long long int i;
	scanf("%lld%lld", &N, &M);
	for (i = 1; i <= N; i++)
	{
		scanf("%lld", &apple_initial);
		apple_end = apple_initial;
		m = M;
		while (m--)
		{
			scanf("%lld", &apple_cut);
			apple_end += apple_cut;
		}
		T += apple_end;
		if (P < (apple_initial - apple_end))//可以保证并列最多时,取编号较小的苹果树
		{
			k = i;
			P = apple_initial - apple_end; //疏果个数最多的
		}
	}
	printf("%lld %lld %lld", T, k, P);
	return 0;
}

結果分析

スコアは100ポイント、時間は468ミリ秒、スペースは2.531MB、時間計算量はO(N * M)です。

おすすめ

転載: blog.csdn.net/weixin_44092088/article/details/109893506