可以实现吗?
  • 板块学术版
  • 楼主sunzz3183
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/1/20 14:39
  • 上次更新2024/1/20 17:34:35
查看原帖
可以实现吗?
171868
sunzz3183楼主2024/1/20 14:39
inline int solve(int k,int x){
    memset(f,0x3f,sizeof(f));
    f[k-1][0]=0;
    for(int i=k;i<=n;i++){
        int U=max(0ll,a[i]-x),D=max(0ll,x-a[i]);
        for(int j=0;j<=U;j++)f[i][U]=max(D,min(f[i][U],f[i-1][j]));
        for(int j=U+1;j<=20;j++)f[i][j]=max(D,min(f[i][j],f[i-1][j]));
        if(i==k)continue;
        U=max(0ll,a[i]+a[i-1]-x),D=max(0ll,x-a[i]-a[i-1]);
        for(int j=0;j<=U;j++)f[i][U]=max(D,min(f[i][U],f[i-2][j]));
        for(int j=U+1;j<=20;j++)f[i][j]=max(D,min(f[i][j],f[i-2][j]));
    }
    int ans=inf;
    for(int i=0;i<=20;i++)ans=min(ans,i+f[n][i]);
    return ans;
}

关于这个 dpdp,当第二维是 2×1092\times 10^9 大小时,可以用数据结构啥的优化写吗?

2024/1/20 14:39
加载中...