b2020012585 2021-10-08 14:01 采纳率: 100%
浏览 69
已结题

请教用c++的vector如何实现(如图有时间限制哦)

题目截图如下:

img

img


本人第一次写数据结构代码,不知道如何用vector解决问题。目前(超时代码)如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    int* a = new int[n];
    int* b = new int[n];
    int* x = new int[m];
    int* y = new int[m];
    for (int i = 0;i < n;i++)
    {
        cin >> a[i] >> b[i];
    }
    for (int i = 0;i < m;i++)
    {
        cin >> x[i] >> y[i];
    }
    for (int i = 0;i < m;i++)
    {
        int lo=0, hi=n;
        while (1 < hi-lo)
        {
            int mi = (hi + lo) >> 2;
            long long int t;
            t = (long long)b[mi] * (long long)x[i] + (long long)a[mi] * (long long)y[i] - (long long)a[mi] * (long long)b[mi];
            if (t >= 0)
                lo = mi + 1;
            else
                hi = mi;
        }
        long long int t;
        t = (long long)b[lo] * (long long)x[i] + (long long)a[lo] * (long long)y[i] - (long long)a[lo] * (long long)b[lo];
        if (t >= 0)
            cout << lo + 1 << endl;
        else
            cout << lo << endl;
    }
    delete []a, b, x, y;
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 广大菜鸟 2021-10-08 14:13
    关注

    没必要动态数组,你改用全局变量,int a[200000]这样,快点,最多空间应该用到0.76MB,没有超;每次动态数组申请浪费时间

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月8日