大佬们,请问我这样做为什么既有TLE又有WA又有AC?
查看原帖
大佬们,请问我这样做为什么既有TLE又有WA又有AC?
532451
DEEP_lianchen楼主2021/7/21 21:42
#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<cmath>
#include<cctype>
#include<cstring>
using namespace std;
#define ll long long
const int max_num=1e7+10;
int main(){
    ll L,N,M;
    cin>>L>>N>>M;
    vector<ll> distance;
    ll temp1=0,temp2;;
    for(ll i=0;i<N;i++){
        cin>>temp2;
        distance.push_back(temp2-temp1);
        temp1=temp2;
    }
    distance.push_back(L-temp1);
    /*
    每次循环把最短的距离合并到旁边的距离中
    */
    for(ll i=0;i<M;i++){
        ll min=max_num;
        auto temp=distance.begin();
        for(auto it=distance.begin();it!=distance.end();it++){
           if(*it<min){
               min=*it;
               temp=it;
           } 
        }
        if((*(temp+1)<=*(temp-1)&&temp+1!=distance.end())||temp==distance.begin()){
            *(temp+1)+=min;
        }
        if((*(temp+1)>*(temp-1)&&temp!=distance.begin())||temp+1==distance.end()){
            *(temp-1)+=min;
        }
        distance.erase(temp);  
    }
    /*
    找到当前最短的距离
    */
    ll min=max_num;
    auto temp=distance.begin();
    for(auto it=distance.begin();it!=distance.end();it++){
        if(*it<min){
            min=*it;
            temp=it;
        } 
    }
    cout<<min;
    return 0;
}
2021/7/21 21:42
加载中...