• 2018年爱奇艺校招笔试


      我选的是前端方向,所以编程题的题目也比较简单,但是坑很多呀,不知道错在哪,最后没办法直接用最暴力的方法AC了。

      笔试分为选择和编程,选择20个,每个三分,编程题两道每道20分。

      选择题考点:

        1、数据结构(包括大顶堆、希尔排序、B-树、以及hash)

        2、计算机网络(只考了一两题,TCP和UDP)

        3、数据库(表设计)

        4、HTML/CSS(CSS3、翻书效果怎么实现、一张图上映射多个区域)

        5、JS(禁止前进和后退、作用域)

      我有印象的应该就是作用域的这个题了:

        下面这个代码输出什么(如果我没记错,应该就是原题目)

    <!DOCTYPE html>
    <html>
    <script>
        function func() {
            document.write(a);
            document.write(fun);
            var a = 1;
            function fun(){
                return 2;
            }
        }
    </script>
    
    <body>
    
        <a onclick="func()">点击我</a>
    </body>
    </html>

      编程题:其实都挺简单的,但是第一题我没想对坑点,我想到的点似乎都没这样的数据。

        第一题:

    幸运ID
    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 131072KB;其他语言 655360KB
    题目描述:
    小C有一张票,这张票的ID是长度为6的字符串,每个字符都是数字,他想让这个ID变成他的辛运ID,所以他就开始更改ID,每一次操作,他可以选择任意一个数字并且替换它。

    如果这个ID的前三位数字之和等于后三位数字之和,那么这个ID就是辛运的。你帮小C求一下,最少需要操作几次,能使ID变成辛运ID

    输入
    输入只有一行,是一个长度为6的字符串。

    输出
    输出这个最小操作次数


    样例输入
    000000
    样例输出
    0

    Hint
    输入样例2
    000018

    输出样例2
    1

    样例解释:将前三位任意一个改为9即可满足条件,操作数为1

    AC代码:(直接暴力贪心解决)

    // Asimple
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <string>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;const int maxn = 100000+5;
    ll n, m, T, len, cnt, num, ans, Max, k;
    string str;
    int max_a[3], min_a[3];
    
    void input(){
        while( cin >> str ) {
            int sum1 = 0, sum2 = 0;
            for(int i=0; i<6; i++) {
                if( i < 3 ) sum1 += (str[i]-'0');
                else sum2 += (str[i]-'0');
            }
            int cnt = abs(sum1-sum2);
            if( sum1>sum2 ) {
                for(int i=0; i<6; i++) {
                    if( i<3 ) max_a[i] = max((str[i]-'0'), 9-(str[i]-'0'));
                    else min_a[i-3] = max((str[i]-'0'), 9-(str[i]-'0'));
                }
            } else {
                for(int i=0; i<6; i++) {
                    if( i>=3 ) max_a[i-3] = max((str[i]-'0'), 9-(str[i]-'0'));
                    else min_a[i] = max((str[i]-'0'), 9-(str[i]-'0'));
                }
            }
            sort(max_a, max_a+3); sort(min_a, min_a+3);
            int res = 0, j = 2, i = 2;
            while( cnt > 0 ) {
                int te = max(max_a[i], min_a[j]);
                cnt -= te;
                if( te == max_a[i] ) i--;
                else j --;
                res ++;
            }
            cout << res << endl;
        }
    }
    
    int main() {
        input();
        return 0;
    } 

    91%代码(第一版就是91%,之后改的只降不升,最后十分钟无能为力只能暴力AC,求大神找出坑点)

    // Asimple
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <queue>
    #include <vector>
    #include <string>
    #include <cstring>
    #include <stack>
    #include <set>
    #include <map>
    #include <cmath>
    using namespace std;
    typedef long long ll;const int maxn = 100000+5;
    ll n, m, T, len, cnt, num, ans, Max, k;
    //vector<int> a[maxn];
    string str;
    int a[10];
    
    void input(){
        while( cin >> str ) {
            memset(a, sizeof(a), 0);
            int sum1 = 0, sum2 = 0;
            for(int i=0; i<6; i++) {
                if( i < 3 ) sum1 += (str[i]-'0');
                else sum2 += (str[i]-'0');
            }
            int cnt = abs(sum1-sum2);
            int res = cnt/9 + (cnt%9!=0);
            // 下面这个判断是我想的坑点
            // 但是没有下面的语句一样也是91%
            if( cnt == 9 ) {
                if( a[0]+a[9] == 0 ) res++;
            } else if( cnt == 18 ) {
                if( a[0]+a[9]<2 ) res ++;
            }
            cout << res << endl;
        }
        // pas;
    }
    
    int main() {
        input();
        return 0;
    } 

    第二题:


    局长的食物
    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 131072KB;其他语言 655360KB
    题目描述:
    局长有N种食物,每种食物有Ai份。

    每天局长会吃一份食物,或者买一份食物(即每天只能进行吃或买其中的一种动作),这样过了M天

    现在局长想知道M天后第p种食物的份数排名(从大到小,相同算并列,例如3 3 2,则排名为1 1 3)

    N,M,P<=100,Ai<=1000

    输入
    第一行N M P

    第二行N个数Ai

    接下来M行,每行A i或者B i分别表示买一份食物i,吃一份食物i

    输出
    一个答案


    样例输入
    3 4 2
    5 3 1
    B 1
    A 2
    A 2
    A 3
    样例输出
    1

    简单排序,注意名次的增加就好

    AC代码:

    // Asimple
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <queue>
    #include <vector>
    #include <string>
    #include <cstring>
    #include <stack>
    #include <set>
    #include <map>
    #include <cmath>
    #define INF 0x3f3f3f3f
    #define debug(a) cout<<#a<<" = "<<a<<endl
    #define test() cout<<"============"<<endl
    #define CLS(a,v) memset(a, v, sizeof(a))
    #define pas system("pause")
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    int dx[] = {-1,1,0,0,-1,-1,1,1}, dy[]={0,0,-1,1,-1,1,1,-1};
    const int maxn = 1000+5;
    const ll mod = 1000000007;
    ll n, m, T, len, cnt, num, ans, Max, k;
    //vector<int> a[maxn];
    struct node{
        int ind;
        int sum;
        bool operator < (const node& a) const {
            return sum>a.sum;
        }
    };
    node a[maxn];
    
    void input(){
        int p;
        while( cin >> n >> m >> p ) {
            for(int i=1; i<=n; i++) {
                cin >> a[i].sum;
                a[i].ind = i;
            }
            char ch;
            while( m -- ) {
                cin >> ch >> num;
                if( ch == 'A' ) {
                    a[num].sum ++;
                } else {
                    if( a[num].sum>0) a[num].sum --;
                }
            }
            sort(a+1, a+n+1);
            int cnt = 0, te = 1;
            a[0].sum = -1;
            for(int i=1; i<=n; i++) {
                if( a[i].sum !=a[i-1].sum ) {
                    cnt += te;
                    te = 1;
                } else {
                    te ++;
                }
                if( a[i].ind == p ) {
                    cout << cnt << endl;
                    break;
                }
            }
        }
        // pas;
    }
    
    int main() {
        input();
        return 0;
    } 
  • 相关阅读:
    解决 Python 连不上pip库的问题(使用国内镜像地址)
    【原】Coursera—Andrew Ng机器学习—Week 2 习题—Linear Regression with Multiple Variables 多变量线性回归
    【原】Coursera—Andrew Ng机器学习—Week 1 习题—Linear Regression with One Variable 单变量线性回归
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 4_Linear Regression with Multiple Variables 多变量线性回归
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 3_Linear Algebra Review
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 2_Linear regression with one variable 单变量线性回归
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念
    vue项目中的父子组件之间的传值。
    精确讲述闭包及内存泄漏
    vue项目富文本编辑器vue-quill-editor之自定义图片上传
  • 原文地址:https://www.cnblogs.com/Asimple/p/9650613.html
Copyright © 2020-2023  润新知