繁忙的Bush SWUSTOJ141

ⅰ亾dé卋堺 提交于 2020-02-17 05:27:32

题目链接: 繁忙的Bush

在这里插入图片描述
在这里插入图片描述
思路: 数据可能会很多,所以采用二分查找+向量数组 (因为是多组数据,vector数组需要在每次测试结束清空,我这里采用了清空数据+释放空间的方法)
代码:

#include <bits/stdc++.h>
using namespace std;
vector<int> vis;
bool cmp(int a,int b)
{
    return a<b;
}
int fnd(int x)
{
    int h=vis.size()-1;
    int l=0;
    while(l<=h)
    {
        int mid=(l+h)/2;
        if(vis[mid]==x)
            return mid;
        else if(vis[mid]<x)
            l=mid+1;
        else
            h=mid-1;
    }
}
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int m,n,x;
        cin>>m>>n;
        while(m--)
        {
            cin>>x;
            vis.push_back(x);
        }
        sort(vis.begin(),vis.end(),cmp);
        while(n--)
        {
            cin>>x;
            vis.erase(vis.begin()+fnd(x));
        }
        for(int i=0;i<vis.size();i++)
            cout<<vis[i]<<endl;
        vis.clear();//清空数据
        vector <int>().swap(vis);//释放空间
    }
    return 0;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!