60fen...
查看原帖
60fen...
267517
Mikemao666楼主2020/5/3 09:37
#include<bits/stdc++.h>
using namespace std;
double a[200001];
int t[200001];
bool cmp(double a,double b){
    return a>b;
}
int main (){
    double l,v;//double是为了求T是避免取整
    int n,i;
    cin>>n>>l>>v; 
    for(i=1;i<=n;++i){
        cin>>a[i];
    }
    sort(a+1,a+n+1,cmp);
    int q;
    cin>>q;
    while(q!=0){//多组测试数据
        int ans(0);
        int ti;
        cin>>ti;
        if(l/v>ti){//特判情况1
            cout<<0<<endl;
            q--;
            continue;
        }
        else if(l/v+a[1]/v>ti){//特判情况2
            cout<<1<<endl;
            q--;
            continue;
        }
        else{
            bool f=true;//判断是否符合题意
            for(i=2;i<=n;i++){
                double t1=0;
                for(int j=i;j>=1;j--){
                    t1+=a[j]/v;//到达施法点所需时间累加
                    ans++;//魔法次数
                }t1+=l/v;//加上最后一次到山顶
                if(t1>ti){
                    cout<<ans<<endl;
                    f=false;
                    break;//判断
                }   
            }if(f==true){//无解
                cout<<"-1"<<endl;
            }q--;   
        }   
    }
    return 0;
}

从第十三个点开始WA,最后三个TLE

我真的没有学过二分。。。

2020/5/3 09:37
加载中...