[题解]CSP-小明种苹果(线性表)

文章目录

题目链接.

算法思想

依题意,对从第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分,用时468ms,空间使用2.531MB,时间复杂度O(N*M)。

猜你喜欢

转载自blog.csdn.net/weixin_44092088/article/details/109893506