CCF CSP 20190901 小明种苹果 100分 解法/思想
近几天正在疯狂的刷CCF题,写博客主要是做一下笔记以及记录一下自己的心得,如果能够帮到大家那就再好不过了,废话不多说,咱们放题:
【题目概述】
小明(小明事情真多)要种苹果,需要疏果把不好的苹果去掉,进行疏果完毕后需要统计出总苹果数T、疏果最多的苹果树编号k、苹果树k剩余的苹果数量P。
【输入输出】
输入和输出格式要严格按照题目要求,细节决定成败,尤其是在做第三题数据处理题时要格外注意输入和输出格式,否则就算你思路是对的也同样不得分。
输入格式可以简单概括为:
第一行输入两个正整数N和M,分别表示苹果树的棵数和疏果操作的轮数。然后再输入N行,每行的第一列表示对应苹果树的苹果数量,后M列分别表示每轮进行疏果的数量。每两个数之间用空格分隔。
输出格式可以简单概括为:
输出三个非负整数,分别为进行疏果完毕后的总苹果数T、疏果最多的苹果树编号k,以及苹果树k剩余的苹果数量P。要保证输出苹果个数是非负的。
【思路】
CCF的第一题一般都是比较简单的题,基本不需要使用到其他算法,通过看输入和输出样例就可以大致明白题目的意思。
这道题的解法大致分为三个步骤:
- 先对每棵树的疏果数累加,然后进行排序和比较得到疏果最多苹果树编号k;
- 计算每个苹果树疏果后的剩余数量,根据k找到对应的苹果树P;
- 累加每个苹果树的苹果数量得到总苹果树T。
具体解释请看代码分析:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int N, M;/*
定义结构体appletree,
num表示一棵苹果树上苹果数量,
nums表示每轮疏果时该苹果树的蔬果个数
*/
struct appletree
{int num;vector<int> nums;
};int main()
{//定义vector<appletree>用于存储多棵苹果树vector<appletree> appnums;cin >> N >> M;//将输入的数据存储到appnums变量中。appletree appnum;for (int i = 0; i < N; i++){cin >> appnum.num;int a_num = 0;appnum.nums.clear();for (int j = 0; j < M; j++){cin >> a_num;appnum.nums.push_back(a_num);}appnums.push_back(appnum);}//总苹果数int appsums = 0;//疏果最多的苹果树编号int max_line = 0;//该苹果树剩余的苹果数量int max_appnum = 0;//存储每个苹果树的疏果数vector<int> applinesum;for (int i = 0; i < N; i++){int qqq = 0;for (int j = 0; j < M; j++){qqq += appnums[i].nums[j];}//将疏果后苹果数量存储到appnums[i].num中appnums[i].num += qqq;//累加计算苹果总数appsums += appnums[i].num;//将每棵苹果树的疏果数分别存储到applinesumapplinesum.push_back(qqq);}//复制一个applinesum中的数据,用于排序vector<int> applinesum2(applinesum);//由于疏果是按负数存储的,所以这里的排序是按疏果数从大到小排序sort(applinesum2.begin(), applinesum2.end());//取第一个数为最大疏果数max_appnum = applinesum2[0];//根据最大疏果数找到对应的苹果树编号for (int i = 0; i < N; i++){if (max_appnum == applinesum[i]){max_line = i + 1;break;}}cout << appsums << " " << max_line << " " << abs(max_appnum) << endl;return 0;
}
测试集:
输入1:
3 3
73 -8 -6 -4
76 -5 -10 -8
80 -6 -15 0
输出1:
167 2 23输入2:
2 2
10 -3 -1
15 -4 0
输出2:
17 1 4
CCF CSP 20190901 小明种苹果 100分 解法/思想相关推荐
- CCF CSP 2019-9-1 小明种苹果 C语言100分
CCF CSP 2019-9-1 小明种苹果 C语言100分 小明种苹果 完成时间11-18 16:54 代码长度510B C 正确 100分 耗时93ms 空间使用6.167MB 这道题简单,仅附上 ...
- CCF CSP 201909-1小明种苹果 C语言版
关键词:201909-1 小明种苹果 C语言 先上代码为敬,题目在后面 编译环境:Dev C++ 5.11 语言:C语言 #include <stdio.h> struct tree {i ...
- CCF CSP 2019-09-2 小明种苹果(续) 解题思路及满分代码(C++11)
文章目录 问题描述 问题分析 满分代码 问题描述 问题分析 题目不难理解,求T(苹果的总数)和E(有苹果掉落的树的个数)也没什么难度,遍历数组进行判断就可以实现,这里略过(后面完整代码注释里会有). ...
- CSP 201909-1 小明种苹果
题目链接:小明种苹果 满分代码 #include <iostream> #include <algorithm> using namespace std;typedef str ...
- ccf:201909-2 小明种苹果(续)
小明在他的果园里种了一些苹果树,这些苹果树排列成一个圆.为了保证苹果的品质,在种植过程中要进行疏果操作.为了更及时地完成疏果操作,小明会不时地检查每棵树的状态,根据需要进行疏果.检查时,如果发现可能有 ...
- CSP 201909-2 小明种苹果(续)Python实现+详解
试题 代码 # N表示苹果树的棵树 N = int(input()) T, D, E = 0, 0, 0 # 所有树剩果总数 # 发生苹果掉落的苹果树总数 # 相邻三棵树发生苹果掉落的组数 treeM ...
- CSP 2019-09-1 小明种苹果 Python实现+详解
试题 代码 # N,M分别表示树的棵树和疏果轮数 N,M = [int(i) for i in input().split()]leftTrees = 0#最后所有树树上的苹果总数 reduceMax ...
- #CSP 201909-1 小明种苹果
#include <stdio.h> #include <limits.h> int main(void) {int n, m, a, drop, i, j;int all = ...
- CCF 201909-2 小明种苹果(续) python 满分
CCF 201909-2 小明种苹果(续) python 满分 题目叙述 问题描述:略 输入格式:略 输出格式:略 样例 满分证明 解题思路 自己版本 大佬版本 满分代码 满分代码一 自己版本 满分代 ...
最新文章
- 关于案例教学大家都有些什么看法呢?
- oracle两表同步java代码,利用DBLink+JOB实现两个Oracle数据库之间的数据同步
- 1.1 为什么选择序列模型-深度学习第五课《序列模型》-Stanford吴恩达教授
- python基础入门:内置函数之排列组合函数教程
- 【Oracle】PL/SQL Developer使用技巧(持续更新中)
- RabbitMQ集群、镜像部署配置
- 【图嵌入】DeepWalk原理与代码实战
- 二叉搜索树的删除操作可以交换吗_JavaScript数据结构 — 二叉搜索树(BST)ES6实现...
- 计算机二级mysql程序设计题库_计算机二级MySQL数据程序设计模拟试题
- 全球电动车竞争加剧 特斯拉全球市场份额持续下滑
- Qt4访问sqlite数据库
- h3c c语言题库,H3C认证试题
- Requests库常用方法及其详解
- sourceInsight
- java docx4j api,docx4j api中文
- jQuery选择器详细介绍
- QT 对话框添加背景图片的方法
- server2012离线安装.netfx3.5/dotnetfx3.5环境
- AJAX的概括(异步传输)
- User Story用户情景与用例规约