2017阿里C++研发工程师-校招-笔试模拟
题目描述:
- 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生00下一对小兔,之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。
- 兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。
- 如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。
请问y年(y>=3)后荒岛上所有的兔子加起来多少岁?(注意, 在条件3执行完之后)
输入: 从命令行输入两行整数,第一行是x,第二行是y
输出: y年后荒岛上所有的兔子岁数的总和
样例:
输入:
3
3
输出:
2
解题思路:
开一个数组, tu[j] 表示在第 某年 年末, j 岁大的兔子对数。 然后每过一年 tu[j] = tu[j-1] (j >= 1), tu[0] 为新生的兔子对数。
手动模拟几组数据
年份(年末)/兔子年龄, 为了简单,先不考虑兔子年龄限制,不考虑超过十对时取走两对年龄大的兔子。
0 1 2 3 4 5 6
1 0 1
2 1 0 1
3 1 1 0 1
4 2 1 1 0 1
5 3 2 1 1 0 1
6 5 3 2 1 1 0 1
然后假设 兔子年龄限制为 5, 并且超过十对时取走两对年龄大的兔子。
年份(年末)/兔子年龄,假设 兔子年龄限制为 5, 并且超过十对时取走两对年龄大的兔子。
0 1 2 3 4 5 6
1 0 1
2 1 0 1
3 1 1 0 1
4 2 1 1 0 1
5 3 2 1 1 0 0
6 4 3 2 0 0 0 0
7 5 4 3 0 0 0 0
吐槽: 年末年初的问题好容易搞混啊,以及兔子生命最后一年的情况,需要静下心慢慢分析,才能“蒙对”题意 -_- || 。
#include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <list>
#include <stack>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <stdexcept>
#include <cstdio>
#include <cstdlib>
using namespace std;
int result(int x, int y)
{
vector<int> tu(x+5, 0);
tu[1] = 1;
for(int i = 2; i <= y; i++)
{
int newTu = 0;
for(int j = x+1; j >=1; j--)
{
tu[j] = tu[j-1];
if(j >= 2 && j <= x)
newTu += tu[j];
}
tu[0] = newTu;
int lastY = 0;
int tot = 0;
for(int j = x; j >= 0; j--)
{
tot += tu[j];
if(lastY == 0 && tu[j])
lastY = j;
}
if(tot > 10)
{
if(tu[lastY] >= 2)
tu[lastY] -= 2;
else
{
tu[lastY] = 0;
for(int k = lastY-1; k >= 0; k--)
if(tu[k])
{
tu[k] -= 1;
break;
}
}
}
}
int ans = 0;
for(int i = 1; i <= x; i++)
ans += tu[i] * i;
return ans*2;
}
int main()
{
int x, y;
cin >> x;
cin >> y;
int res = result(x, y);
cout << res << endl;
return 0;
}
2017阿里C++研发工程师-校招-笔试模拟的更多相关文章
- 2017阿里C++研发工程师-校招-单词匹配
题目描述 给一个字符串, 然后给一个字典. 把字符串分解成字典里的单词组成的句子, 请输出所需空格最少的方案.并输出该方案. 样例 例如: 字符串为: str="ilikealibaba&q ...
- 专访阿里资深研发工程师窦贤明:PG与商业数据库差距并不明显
窦贤明认为, 支持类型.功能和语法丰富,性能优良 9月24日,窦贤明将参加在北京举办的线下活动,并做主题为<Greenplum分片案例分析>的分享.值此,他分享了PG.工作上的一些经历 ...
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C
偶尔碰到这题,简单数位DP题,然而我已生疏了…… 这次算是重新想到的,看来对DP的理解有增进了…… dp[i][j][k],表示前i为,mod为j,是否出现2.3.5的剩下的数位可组成的数字.答案就是 ...
- 阿里Java研发工程师实习面经
十分幸运 拿到阿里云的offer,感谢周围无数人对我的支持和鼓励,所以写篇面经希望可以帮助大家. 面试中,运气占很大一部分的,所以你们若是没有通过,一定不要气馁,继续加油. 每个努力的人 都值得钦佩, ...
- 阿里Java研发工程师实习面经,附面试技巧
作者:如何进阿里 链接:https://www.nowcoder.com/discuss/72899?type=0&order=0&pos=17&page=1 来源:牛客网 前 ...
- 学生党如何拿到阿里技术offer: 《2016阿里巴巴校招内推offer之Java研发工程师(成功)》
摘要: 这篇文章字字珠玑,这位面试的学长并非计算机相关专业,但是其技术功底足以使很多计算机专业的学生汗颜,这篇文章值得我们仔细品读,其逻辑条理清晰,问题把握透彻,语言表达精炼,为我们提供了宝贵的学习经 ...
- 美团点评2017校招笔试真题-算法工程师A
美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. map 正确答案: B STL的容器可以分为以下 ...
- 美团点评2017校招笔试真题-算法工程师B
美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...
- 蚂蚁金服财富技术部,诚招Java研发工程师。校招内推!!!
蚂蚁金服财富技术部,诚招Java研发工程师. 团队是蚂蚁金服财富技术部核心团队,支持亿级互联网交易清算,在这里不仅能学习到先进的互联网技术,也能了解许多终身受益的金融知识. 内推对象 2020届毕业生 ...
随机推荐
- GNU Libtool
Fastbit (WAH)的代码可在链接中下载 安装以及运行命令如下: 解压命令: $ tar -zxvf fastbit-ibis1.3.8.tar.gz 安装命令: $ cd fastbit-ib ...
- hdu1568&&hdu3117 求斐波那契数前四位和后四位
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=2 ...
- EasyUI 的常见标签
1. Resizable 属性 原理: 页面加载完毕后,EasyUI主文件会扫描页面上的每个标签,判断这些标签的class值是否以"easyui-"开头, 如果是,则拿到之后的部分 ...
- Clairewd’s message--hdu4300(Next数组的运用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300 题意就是给你26的字母的加密方式,然后又给了一个串s1是包含加密后的和没有加密的但是没有加密的可 ...
- 15.Update Documents-官方文档摘录
1.插入数据 db.inventory.insertMany( [ { item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: ...
- img 标签注意 默认img标签,有一个1px的边框 img{ border: 0; }
默认img标签,有一个1px的边框 img{ border: 0; }
- uib-datepicker-popup 日期不可输入 只可以选择 :readonly="true"
<div name="{{property.name}}" style="display: flex" ng-switch-when="date ...
- 机器学习算法(优化)之二:期望最大化(EM)算法
EM算法概述 (1)数学之美的作者吴军将EM算法称之为上帝的算法,EM算法也是大家公认的机器学习十大经典算法之一.EM是一种专门用于求解参数极大似然估计的迭代算法,具有良好的收敛性和每次迭代都能使似然 ...
- JDB调试代码 20165324 何春江
Java书本程序调试: 课上程序调试
- 有按钮的ListView
有按钮的ListView 但是有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮.添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上 ...