2019年9月CCF CSP 认证题解第一题

小明种苹果(apple)

【题目描述】

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

【输入格式】

从标准输入读入数据。
第 1 行包含两个正整数 N 和 M,分别表示苹果树的棵数和疏果操作的轮数。
第 1 + i 行(1 ≤ i ≤ N),每行包含 M + 1 个整数 ai0, ai1, . . . , aiM。其中 ai0 为正整数,表示第一轮疏果操作开始前第 i 棵树上苹果的个数。ai j(1 ≤ j ≤ M)为零或负整数,表示第 j 轮疏果操作时从第 i 棵树上去掉的苹果个数。如果为零,表示没有去掉苹果;如果为负,其绝对值为去掉的苹果个数。
每行中相邻两个数之间用一个空格分隔。

【输出格式】
输出到标准输出。

输出只有一行,包含三个整数 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 棵树

using namespace std;

int main()
{
    int m,n;
    cin>>m>>n;
    int a[m][n+1];
    for(int i=0;i<m;i++)
        for(int j=0;j<n+1;j++)
        cin>>a[i][j];
    int allkey=0;
    for(int i=0;i<m;i++)
        for(int j=0;j<n+1;j++)
        allkey = allkey + a[i][j];
    int b[m];
    for(int k=0;k<m;k++)
        b[k]=0;
    for(int k=0;k<m;k++)
        for(int j=1;j<n+1;j++)
            b[k]=b[k]-a[k][j];//
    int maxx=b[0];
    int p=0;
    int t=0;
    while(p<m){
        if(maxx<b[p]) { maxx = b[p];t=p;}
        p++;
    }
    t++;
    cout<<allkey<<" "<<t<<" "<<maxx;
    return 0;
}

关于 CCF CSP 认证第35次考试的 Python 目解答或解析,目前并未提供具体的引用材料来支持这一请求。然而,可以基于以往的经验和类似的目类型给出一般性的指导。 ### 关于CCF CSP认证 CCF CSP(软件能力认证)是一项评估个人编程能力和解决问能力的测试[^2]。该认证通常包含多道编程,考察的内容涵盖了基本的数据结构、算法设计以及程序实现的能力。 ### 如何准备CSP认证? 对于参加此类认证考试的学生或者开发者来说,熟悉常见的算法模式是非常重要的。比如: - 掌握数组操作的基础方法。 - 学习并熟练运用诸如栈、队列这样的基础数据结构。 - 对字符串处理有深入的理解,能够快速编写正则表达式匹配逻辑。 以下是针对可能出现在CSP中的典型问的一个通用解决方案框架: #### 示例:矩阵转置 假设有一道类似于矩阵重塑的问,这里展示如何通过Python实现矩阵转置的功能作为例子: ```python def transpose(matrix): rows = len(matrix) cols = len(matrix[0]) if matrix else 0 transposed = [[matrix[row][col] for row in range(rows)] for col in range(cols)] return transposed # 测试代码 input_matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] result = transpose(input_matrix) for r in result: print(r) ``` 上述代码实现了简单的二维列表(即矩阵)转置功能[^3]。 ### 提升答技巧 为了更好地应对像CSP这样严格的评测环境,在日常练习中应该注重以下几个方面: - **时间复杂度优化**:确保所写的函数尽可能高效运行。 - **边界条件考虑全面**:注意输入为空或其他极端情况下的行为定义。 - **可读性强**:即使追求效率也不能牺牲代码清晰性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值