阿里研发0304笔试情况和题解

时长:90分钟
笔试题目:6道单选+6道多选+3道编程
这次的编程题比前几天字节的简单一些,不过最后一题也挺难的,选择题只能听天由命了。。更一下编程三道题题解吧。

第一题:晶体

题目内容如下:
牛牛发现了一种奇怪的物质。这种材料的晶体保持规则的多边形,时间每经过秒,每边的晶体数量增加个。第一个晶体在第1秒时制成

可以通过找规律发现,若边长是 ,那么每过1秒,单位晶体的增量会增加。或者说,增量为一个等差数列。

可以直接模拟等差数列求和,或套用求和公式均可。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i;
    long long res=0;
    cin>>n;
    for(i=0;i<n;i++){
        long long a,b;
        cin>>a>>b;
        int d=a-2;
        res+=(1+1+b*d)*(b+1)/2;
    }
    cout<<res;
}

这题py写起来更短:

n=int(input())
res=0
for _ in range(n):
    a,b=[int(i) for i in input().split()]
    res+=((b+1)+(a-2)*(1+b)*b/2)
print(int(res))

这种找规律的题,校招不多,但是竞赛里面可能签到题经常遇见,只要多练就很容易掌握技巧。
这里有一道类似的:https://www.nowcoder.com/practice/609bd97833c4441eaaabf86ddf92f9b1?tpId=196&tqId=40407&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj%3Ftab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D196&difficulty=undefined&judgeStatus=undefined&tags=&title=

第二题:等腰三角形

题目是:

牛牛在纸上画了一个正n边形,他想知道多边形中等腰锐角三角形的数量。(三角形的顶点要在多边形的顶点上)
不同的三角形的定义:两个三角形,只要有一个点不在同一个位置上就算做不同的三角形。

等腰锐角三角形的定义:顶角是锐角的等腰三角形被成为等腰锐角三角形。

题解:

(这道题的特判卡了我挺久了,wa了很多发。。)

显然,对于每个点而言以该点为顶角的等腰三角形数量是相同的,其数量为 。原因是,除了该点以外的 个点可以两两配对。

在形成的这 个三角形中,钝角三角形的数量一定是 个。首先需要把这个减去。之后可以算出所有的直角和锐减等腰三角形。

然后就需要处理两种特殊情况:

  1. 是4的倍数时,每个顶点可以形成一个等腰直角三角形,需要减去。

  2. 是3的倍数时。每三个顶点形成的等边三角形是同一个,这部分重复计算的需要减去。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    long long p=(n-1)/2;
    p=(p+1)/2;
    long long sum=n*p;
    if(n%4==0)sum-=n;
    if(n%3==0)sum-=n/3*2;
    cout<<sum;
}

第三题:扫雷游戏

图片说明

这道题数据范围是 4*4 的棋盘,所以 状压枚举就可以了。大家一定要学会看数据范围知解法的窍门(滑稽←_←)

我之前刷牛客dp专题的时候,练状压dp写二进制枚举对这个题帮助挺大的,熟练了之后十几分钟就能写完,就是判断雷的细节有点多,容易写错。具体的细节看代码吧,状压的精髓就是:

for(i=0;i<1<<n;i++) ……

利用 的二进制情况进行枚举。

#include<bits/stdc++.h>
using namespace std;
string s[5];
int main(){
    int n,i,j,k,x,y;
    for(i=0;i<4;i++)cin>>s[i];
    int cnt=0;
    int tong[4][4]={};
    for(i=0;i<1<<16;i++){
        int mp[4][4]={};
        for(j=0;j<16;j++){
            if(i&(1<<j)){
                mp[j/4][j%4]=-1;
                if(s[j/4][j%4]!='.')break;
            }
        }
        if(j<16)continue;
        for(j=0;j<4;j++){
            for(k=0;k<4;k++){
                if(mp[j][k]==-1){
                    for(x=-1;x<=1;x++){
                        for(y=-1;y<=1;y++){
                            if(j+x>=0&&j+x<4&&k+y>=0&&k+y<4&&mp[j+x][k+y]!=-1){
                                mp[j+x][k+y]++;
                            }
                        }
                    }
                }
            }
        }
        int jud=0;
        for(j=0;j<4;j++){
            for(k=0;k<4;k++){
                if(s[j][k]!='.'&&s[j][k]-'0'!=mp[j][k])jud=1;
            }
        }
        if(!jud){
            cnt++;
            for(j=0;j<4;j++){
                for(k=0;k<4;k++){
                    tong[j][k]+=mp[j][k]==-1;
                }
            }
        }
    }
    if(cnt==0){
        cout<<-1;
    }
    else{
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                if(s[i][j]=='.'){
                    if(tong[i][j]==cnt)cout<<"X";
                    else if(tong[i][j]==0)cout<<"O";
                    else cout<<".";
                }
                else cout<<s[i][j];
            }
            cout<<endl;
        }
    }
}

之前打了一些竞赛区的算法比赛,刷了挺多算法题,然后面试也突击完牛客的剑指offer和算法首页的那个题单,感觉效果还行,手速和思维提升都挺大的。不过目前感觉自己的图论还是弱了一些,希望牛客能更新图论方面的题单

最后推荐一下我觉得对我帮助挺大的dp题单,刷过一遍之后,基本现在不是特别难的dp都能找到递推的思路:https://www.nowcoder.com/exam/oj?tab=%E7%AE%97%E6%B3%95%E7%AF%87&topicId=230

#阿里巴巴##笔经##实习##笔试时间##笔试题目#
全部评论
阿里机试,众生平等,大佬除外。
44 回复 分享
发布于 2022-03-04 21:51
楼主这题目是开发岗的还是数据岗的呢?
3 回复 分享
发布于 2022-03-04 21:43
阿里巴巴CTO23届春招开始啦!后端java开发部门直推!面向海外业务,组内氛围极好!极好!极好!简历直达主管!可帮忙修改简历,实时跟进进度!欢迎找我内推投递~v.x: fring_x
1 回复 分享
发布于 2022-03-07 17:00
23届春招开始啦~ 有想来大淘宝技术-用户增长团队的同学欢迎联系我,简历可发送到yitianzhang.zyt@alibaba-inc.com、微信176****8600 招聘岗位:java、前端、测试、数据 团队描述:在对用户争夺进入白热化的时期,淘系用户增长团队正承担着捍卫电商主板块增长的重要使命,我们将在最贴近用户的前线战场,用持续的技术创新来驱动阿里电商巨擎的稳步前行。用户增长技术团队是一支年轻开放的团队,倡导“增长黑客”极客氛围,在这里你将收获超大规模高并发的架构能力,洞悉用户增长最前沿的实践方法,在数字化时代具备最核心的竞争力。团队技术氛围浓厚,研发流程规范,代码质量高,学习成长速度快。
1 回复 分享
发布于 2022-03-07 12:07
楼主太强了,有兴趣来腾讯吗?
1 回复 分享
发布于 2022-03-07 10:49
可以看看我的贴子:https://www.nowcoder.com/discuss/854273
1 回复 分享
发布于 2022-03-06 22:46
牛逼
1 回复 分享
发布于 2022-03-04 23:28
😭我是小丑 今晚换我来三道估计只有第一道会做
1 回复 分享
发布于 2022-03-04 22:41
牛比,太强了
1 回复 分享
发布于 2022-03-04 22:17
楼主大佬
1 回复 分享
发布于 2022-03-04 21:47
能不能问一下楼主是不是工程研发岗啊😁
1 回复 分享
发布于 2022-03-04 21:14
第三题爆搜就行: https://gist.github.com/baolintian/e84cdc04209b98fb534019764ec1b623
1 回复 分享
发布于 2022-03-04 20:46
题主 “在形成的这 p个三角形中,钝角三角形的数量一定是 p/2”, 请问为何?这个地方没有解释
2 回复 分享
发布于 2022-03-06 19:56
第一题我校新生赛的题,难怪大一的我在哪儿见过,第三题扫雷只见过一道2列的棋盘,第二道题解都看不到55555太菜了😭😭😭
点赞 回复 分享
发布于 2022-04-21 10:51
大佬,正偶数边形好像都有直角吧,比如正6边型,而不是n%4
点赞 回复 分享
发布于 2022-03-30 16:32
为什么钝角三角形是p/2
点赞 回复 分享
发布于 2022-03-24 22:54
擦,校友。
点赞 回复 分享
发布于 2022-03-18 20:40
阿里巴巴【钉钉】-安卓,2023届暑期实习生火热招聘中,欢迎加微信 dcr000_1 详聊!
点赞 回复 分享
发布于 2022-03-13 14:10
请问第三题大佬能说说具体思路吗
点赞 回复 分享
发布于 2022-03-11 16:33
阿里巴巴闲鱼技术部,2023届发实习offer,可以加微信详聊:jack164059,流程快!
点赞 回复 分享
发布于 2022-03-11 16:17

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
评论
83
376
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务