首页 > 拼多多客户端笔试2020.08.02
头像
澹台棋晴
编辑于 2020-08-02 21:48
+ 关注

拼多多客户端笔试2020.08.02

只做了两个题目(太菜了),把自己的代码记录一下吧
第一个题目:0.94
第三个题目:0.95
第一个题目:
#include <bits/stdc++.h>
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;

int N,M,T;
bool cmp(pair<int,int>a,pair<int,int>b){
    return a.first>b.first;
}
int main() {
    cin>>N>>M>>T;

    int x,y;
    int maxYlunch=0,maxYdinner=0;
    vector<pair<int,int>>lunch;
    vector<pair<int,int>>dinner;
    while(N--){
        cin>>x>>y;
        lunch.push_back(make_pair(y,x));
        maxYlunch = max(maxYlunch,y);
    }
    while(M--){
        cin>>x>>y;
        dinner.push_back(make_pair(y,x));
        maxYdinner = max(maxYdinner,y);
        //cout<<"  sdfsdfsd"<<endl;
    }
    //cout<<maxYdinner<<" "<<maxYlunch<<" "<<T;
    if((maxYlunch+maxYdinner)<T){
        cout<<-1<<" ";
        return 0;
    }
    sort(lunch.begin(),lunch.end());
    sort(dinner.begin(),dinner.end(),cmp);//从小到大排序否则超时了
    //cout<<"  sdfsdfsd1"<<endl;
    int fat=100000;
    for(int i=0;i<lunch.size();i++){
        //cout<<lunch.size()<<" ";
        //cout<<"  sdfsdfsd2"<<endl;
        if(lunch[i].first>=T){
            fat = min(fat,lunch[i].second);
            continue;
        }
        for(int j=0;j<dinner.size();j++){

            if((lunch[i].first + dinner[j].first)>=T){
                fat = min(fat,lunch[i].second+dinner[j].second);

            }
            else{
                break;//排序为了节省时间的,后边的都小,不满足条件,直接跳出就可以
            }
        }
    }
    for(int i=0;i<dinner.size();i++) {
        if (dinner[i].first >= T) {
            fat = min(fat, dinner[i].second);
        }
    }
    cout<<fat<<" ";
    return 0;
}
第二个题目
#include <bits/stdc++.h>
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
int k;
int N;
int main(){
    cin>>k>>N;
    vector<int>num;
    int x;
    int n=N;

    while(N--){
        cin>>x;
        num.push_back(x);
    }
    bool flag = false;
    int ans =0;
    int ret =0;

    for(int i=0;i<n;i++){
        if(k-num[i]==0){
            flag =true;
            cout<<"paradox";
            break;
        }
        else if(k - num[i] < 0){
            ret++;
            ans = num[i] - k;
            k = ans;
        }
        else if(k - num[i] > 0){
            ans = k - num[i];
            k -= num[i];
        }
    }
    if(!flag){
        cout<<ans<<" "<<ret;
    }
    return 0;
}



全部评论

(5) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐