思路:将初始的树上苹果数和疏过操作过程分别存在两个数组中。分别对两个数组操作,求出每棵树上的疏果数和疏果后的苹果总数。扫描每棵树上的疏果数的数组,标记出最多的疏果的树。
代码实现:
#include<iostream>
using namespace std;
const int N = 1000;
const int M = 1000;
int a[N] = {0};
int b[M][M+1];
int main(){
int n,m;
cin>>n>>m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m+1; j++){
cin>>b[i][j];
if(j != 0)
a[i] -= b[i][j];
}
}
int T = 0,k = 0,P;
for(int i = 0; i < n; i++){
T += (b[i][0] - a[i]);
}
for(int i = 1; i < n; i++){
if(a[i] > a[k])
k = i;
}
cout<<T<<' '<<k+1<<' '<<a[k];
return 0;
}
本文介绍了一种基于树形结构的疏果算法,通过记录初始苹果数和疏果过程,计算每棵树的疏果数量及总苹果数,最终找出疏果最多的树。算法使用数组存储数据,遍历计算得出结果。
565

被折叠的 条评论
为什么被折叠?



