WA 65pts求调,玄关
查看原帖
WA 65pts求调,玄关
849627
MarcLian楼主2024/8/24 15:28
using namespace std;
typedef long long ll;
const ll N=505,K=4e6+8;
ll t[N],cnt[K],sC[K],sT[K],dp[K],d[N],n,m;
void DPopt(){
    ll GAP=2*m;
    for(ll i = 2;i <= n;i++){
        if(t[i]-t[i-1]>GAP){
            d[i]=GAP;
        }
        else d[i]=t[i]-t[i-1];
    }
    for(ll i = 2;i <= n;i++){
        t[i]=t[i-1]+d[i];
    }
}
int main(){
memset(dp,0x3f,sizeof(dp));
    cin>>n>>m;
    for(ll i = 1;i <= n;i++){
        cin>>t[i];
    }
    sort(t+1,t+n+1);
    DPopt();
    ll k=t[n]+m;
    for(ll i = 1;i <= n;i++)cnt[t[i]]++;
    for(ll i = 0;i <= k;i++){
        sC[i]=sC[i-1]+cnt[i];
        sT[i]=sT[i-1]+cnt[i]*i;
    }
    dp[0]=0;
    for(ll i = 0;i <= k;i++){
        ll l=max(0ll,i-2*m),r=max(0ll,i-m);
        for(ll p = l;p <= r;p++){
            dp[i]=min(dp[i],dp[p]+i*(sC[i]-sC[p])-(sT[i]-sT[p]));
        }
    }
    cout<<*min_element(dp+t[n],dp+k+1);
    return 0;
}

WA 65pts,整了2hrs。

我看到这篇帖子,,但改完后还是65pts

求dalao debug

2024/8/24 15:28
加载中...