「csp 模拟试题201909-1」小明种苹果 C/C++ 100分

10 篇文章 0 订阅

目录

  • 题目
  • 输入输出样例
  • 题解思路
  • 题解源码(c/c++)

题目 :小明种苹果

【问题描述】

小明在他的果园里种了一些苹果树。为了保证苹果的品质,在种植过程中要进行若干轮疏果操作,也就是提前从树上把不好的苹果去掉。第一轮疏果操作开始前,小明记录了每棵树上苹果的个数。每轮疏果操作时,小明都记录了从每棵树上去掉的苹果个数。在最后一轮疏果操作结束后,请帮助小明统计相关的信息。

【输入格式】

从标准输入读入数据。

第 1 行包含两个正整数 N 和 M,分别表示苹果树的棵数和疏果操作的轮数。

第 1+i 行(1<= i <= N),每行包含 M+1 个整数 ai0,ai1,…,aiM。其中 ai0 为正整数,表示第一轮疏果操作开始前第 i 棵树上苹果的个数。aij(1 <= j <= M)为零或负整数,表示第 j 轮疏果操作时从第 i 棵树上去掉的苹果个数。如果为 0,表示没有去掉苹果;如果为负,其绝对值为去掉的苹果个数。

每行中相邻两个数之间用一个空格分隔。

【输出格式】

输出到标准输出。

输出只有一行,包含三个整数 T、k 和 P。其中,

T 为最后一轮疏果操作后所有苹果树上剩下的苹果总数(假设苹果不会因为其它原因减少);

k 为疏果个数(也就是疏果操作去掉的苹果个数)最多的苹果树编号;
P 为该苹果树的疏果个数。

相邻两个数之间用一个空格分隔。输入的数据保证是正确的,也就是说,每棵树在全部疏果操作结束后剩下的苹果个数是非负的。

输入输出样例

  • 输入样例1
3 3
73 -8 -6 -4
76 -5 -10 -8
80 -6 -15 0
  • 输出样例1
167 2 23
样例 1 解释

第 1 棵苹果树的疏果个数为 8+6+4 = 18, 第 2 棵为 5+10+8 = 23,第 3 棵为 6+15+0 = 21,因此最后一轮疏果操作后全部苹果树上的苹果个数总和为(73 -18)+ (76 - 23)+ (80 - 21)= 167,疏果个数最多的是第 2 棵树,其疏果个数为 23。

  • 输入样例2
2 2
10 -3 -1
15 -4 0
  • 输出样例2
17 1 4
样例 2 说明

两棵树的疏果个数均为 4,应输出编号最小的第 1 棵数。

【子任务】

在这里插入图片描述

题解思路

水题,直接输入后进行计算即可。就用信号标志量进行记录判断。一个记录苹果树上苹果总数 count_appleTree,一个记录蔬果总数 count_minusApple。另外的最大蔬果树的编号和最多蔬果树直接用动态记录选最大值即可。注意判断时直接判断大于或小于,第一次出现的编号肯定是最小的,避免了相等情况还要判断最小的树编号问题

题解(c/c++)

#include<bits/stdc++.h>
using namespace std;
int main() {
    int count_appleTree=0,count_minusApple=0,flag_minusApple=0;
    int flag_treeNum,flag_max_minusApple=INT_MIN;
    int ai0,aij;
    int N,M;
    cin>>N>>M;
    for(int i=0;i<N;i++){
        flag_minusApple=0;
        cin>>ai0;
        count_appleTree+=ai0;
        for(int j=0;j<M;j++){
            cin >> aij;
            flag_minusApple-=aij;
            count_minusApple -= aij;
        }
        if (flag_minusApple > flag_max_minusApple) {
            flag_max_minusApple = flag_minusApple;
            flag_treeNum = i + 1;
        }
    }
    cout << count_appleTree - count_minusApple <<" "<< flag_treeNum <<" "<<flag_max_minusApple;
    return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值