zoukankan      html  css  js  c++  java
  • 网易互联网2015 在线笔试(2)

    题目

    题目大意叙述如下:

    现有 AB 两队进行篮球比赛,位置 d 为三分线,在三分线外进球则得 3 分,三分线内进球则得 2 分;

    A 队整场进球 n 个,位置分别为 a1,a2,...an

    B 队整场进球 m 个,位置分别为 b1,b2,...bm

    主人公小明有权设立三分线位置,他想让 A 队尽可能多的得分,以拉大 AB 两队的得分差距。问将 d 设置为多少可以使得 Score(A)Score(B) 分差最大?

    分析

    此题要求 Score(A)Score(B) 的最大值,就要保证 A 队得分尽量高,也就是说要使得其三分球的数目尽可能的多。现在以 A 队投篮的位置为基准,将三分线设立为其从小到大的逐个位置,求分差,找到最大分差值,则该位置就是三分线设立点。

    程序实现

    #include <iostream>
    #include <cstdlib>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int getCount(vector<int> &Bd, int m, int d)
    {
        int count = 0;
        for (int i = 0; i < m; i++)
        {
            if (Bd[i] < d)
                count++;
        }
        return count;
    }
    
    int maxScore(vector<int> &Ad, int n, vector<int> &Bd, int m)
    {
    
        //将AB两队的,投篮点排序
        sort(Ad.begin(), Ad.end());
        sort(Bd.begin(), Bd.end());
        int max = 0 , dis = 0;
        for (int i = 0; i < n; i++)
        {
            //将三分点设置为当前
            int d = Ad[i];
            //求A队得分
            int scoreA = 3 * (n - i) + 2 * i;
    
            //求B队得分
            int num = getCount(Bd, m, d);
            int scoreB = 2 * num + 3 * (m - num);
    
            //求临时分差
            int tmp = scoreA - scoreB;
            if (tmp > max)
            {
                max = tmp;
                dis = d;
            }//if
        }
        return max;
    }
    
    int main()
    {
        int n, m,tmp;
        vector<int> Ad, Bd;
    
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> tmp;
            Ad.push_back(tmp);
        }
        cin >> m;
        for (int i = 0; i < m; i++)
        {
            cin >> tmp;
            Bd.push_back(tmp);
        }
    
        cout << maxScore(Ad, n, Bd, m) << endl;
        system("pause");
        return 0;
    }
  • 相关阅读:
    lintcode:落单的数
    lintcode: 翻转链表
    lintcode :Reverse Words in a String 翻转字符串
    lintcode :Invert Binary Tree 翻转二叉树
    lintcode : 空格替换
    lintcode:Matrix Zigzag Traversal 矩阵的之字型遍历
    lintcode: 爬楼梯
    lintcode:Compare Strings 比较字符串
    lintcode: 有效的括号序列
    lintcode :Valid Palindrome 有效回文串
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214855.html
Copyright © 2011-2022 走看看