求助(c++14,动态规划)
查看原帖
求助(c++14,动态规划)
378003
封禁用户楼主2021/10/17 20:15

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int dp[505];//dp[前几个人]
int t[505];
vector<int> bus_time;
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%d",&t[i]);
    sort(t+1,t+n+1);
    int lastcur=1;
    bus_time.push_back(0);
    for(int i=1;i<=n;i++){
        int bac=bus_time[bus_time.size()-1];
        int a=max(bac,t[i]);
        int b=max(bac+m,t[i]);
        int a_wait=dp[lastcur-1];
        for(int j=lastcur;j<=i;j++) a_wait+=a-t[j];
        int b_wait=dp[i-1]+b-t[i];
        if(a_wait<b_wait){
            bus_time[bus_time.size()-1]=a;
            dp[i]=a_wait;
        }
        else{
            bus_time.push_back(b);
            lastcur=i;
            dp[i]=b_wait;
        }
    }
    printf("%d",dp[n]);
    return 0;
}

20分,剩下80分WA

2021/10/17 20:15
加载中...