• 2018.3.22 美团2018校招笔试


    总体来说体验不错,考题总共分为四个部分,前三部分涉及较广,连编译原理,软件工程,汇编都考到了一点。数学部分偏概率和排列组合,但都是高中的常规考题。

    要吐槽的就是有两道图片逻辑题了,眼瞎(星际)的我是在看不出什么规律:

    郑重声明!下面考题的图片来自http://a.xiumi.us/board/v5/39Vza/81056540

    这里写图片描述

    这里写图片描述

    各位看官们找到规律了吗,反正这两道我当时是凭感觉选的。。。

    好像还有一道概率题,红绿灯的那个,四个答案都没正确的?我自己算的答案选择题里没有,事后在讨论区也看到一部分人吐槽这道题。不知道是我们错了,还是MT的锅。。。

    第四部分编程题

    中规中矩,两道题算都AC了吧。

    第一道图论,求给的简单图中加多少边能成为闭图。
    思路:
    纪录每个点的度数,按照度数排序,找到刚好满足d(u)+d(v)>=n的,扫描右面的,检查是否有直连边,纪录即可。
    这里写图片描述

    #include<iostream>
    #include <bits/stdc++.h>
    using namespace std;
    
    struct Point
    {
    	int Id;
    	int Degree;
    };
    int cmp(const void* p1, const void *p2)
    {
    	Point *pt1 = (Point*)p1, *pt2 = (Point*)p2;
    	return pt1->Degree - pt2->Degree;
    }
    int binary(Point ps[], int n, int de)
    {
    	int start = 0, end = n - 1;
    	while (start <= end) {
    		int mid = (start + end) / 2;
    		if (ps[mid].Degree < de)
    			start = mid + 1;
    		else if (ps[mid].Degree >= de)
    			end = mid - 1;
    	}
    	if (end == n - 1)
    		return -1;
    	return end + 1;
    }
    
    int main()
    {
    //    freopen("in.txt","r",stdin);
    //	while (true)
    //	{
    		int added = 0;
    		int pointc, edgec;
    		int flag[55][55] = {};
    		Point points[55];
    		scanf("%d%d", &pointc, &edgec);
    		for (int s = 0; s < pointc; s++)
    		{
    			points[s].Id = s;
    			points[s].Degree = 0;
    		}
    		for (int s = 0; s < edgec; s++)
    		{
    			int p1, p2;
    			scanf("%d%d", &p1, &p2);
    			flag[p1 - 1][p2 - 1] = 1;
    			flag[p2 - 1][p1 - 1] = 1;
    			points[p1 - 1].Degree++;
    			points[p2 - 1].Degree++;
    		}
    		qsort(points, pointc, sizeof(Point), cmp);
    		for (int s = pointc - 1; s >= 0; s--)
    		{
    			int low = pointc - points[s].Degree;
    			int index = binary(points, pointc, low);
    			while (index < pointc)
    			{
    				if (index != s)
    				{
    					if (flag[points[s].Id][points[index].Id] == 0&& flag[points[index].Id][points[s].Id]== 0)
    					{
    						flag[points[s].Id][points[index].Id] = 1;
    						flag[points[index].Id][points[s].Id] = 1;
    						added++;
    					}
    				}
    				index++;
    			}
    		}
    		printf("%d
    ", added);
    //	}
    	return 0;
    }
    
    

    第二道就是一个字符串结构体排序,很简单,直接换C++写了。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    int a[100];
    struct Qu
    {
        string s;
        double X,Y;
        int d;
    };
    int so(double x,double y)
    {
        double a = y/x;
        if(a<=0.3&&a>=0)
        {
            return 5;
        }
        else if(0.3<a&&a<=0.6)
        {
            return 4;
        }
        else if(0.6<a&&a<=1)
        {
            return 3;
        }
    }
    
    bool cmp(Qu s1,Qu s2) {
        return s1.s < s2.s;
    }
    
    int main()
    {
    //    freopen("in.txt","r",stdin);
    
        Qu a[110];
        int n;
        cin>>n;
        for(int i = 0; i < n; i++)
        {
            cin>>a[i].s>>a[i].X>>a[i].Y;
            int t = so(a[i].X,a[i].Y);
            a[i].d = t;
        }
        sort(a,a+n,cmp);
        for(int i = 0; i < n; i++) {
            cout<<a[i].s<<" "<<a[i].d<<endl;;
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    使用SharePoint文档库需注意的问题
    Windows 2003 lassess.exe 系统错误
    使用javascript 实现.net 验证控件功能
    NetAdvantage For .NET全新推出 2008 Volume 2 版加强了对web图表的支持
    Aspose.Total 发布Q12010第一季度版
    FastReport VCL4.9发布
    StimulReport.Net报表控件推介
    .NET Reactor超高性价比的混淆器
    TeeChartfor.NET 全面支持VisualStudio2010和.NET Framework4.0 (控件中国网)
    Dundas Dashboard V2.0仪表盘控件的发布
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/8634302.html
Copyright © 2020-2023  润新知