uva 1336 修长城 dayly training dp

这道题说是像那个color length  一样可以类似预处理的方式。。。

还学了用floor函数。。。

如果是要整数的话 ,就直接%。0f就可以了,,


然而自己不知道为什么基本是照着敲的,还是样例都错了。。

不过要注意什么时候 哪些东西最好一开始就弄double

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define INF 10000000000000
#define bug1 cout<<"bug1"<=0&&j>=0)finished+=psdt[j]-psdt[i-1];//这个地方表达的意思挺好的。。
    return (psdt[n]-finished)*fabs(x2-x1)/v;//这个地方就是类似color的地方。
}
double dp(int i,int j,int p){
    if(i==1&&j==n)return 0;
    double &ans=d[i][j][p];
    if(vis[i][j][p])return ans;
    vis[i][j][p]=1;
    ans=INF;
    double x=(p==0?node[i].x:node[j].x);
    if(i>1)ans=min(ans,dp(i-1,j,0)+cost(x,node[i-1].x,i,j));
    if(j1)ans=min(ans,dp(i-1,j,0)+cost(node[i].x,node[i-1].x,i,j));
        if(j1)ans=min(ans,dp(i-1,j,0)+cost(node[j].x,node[i-1].x,i,j));
        if(jnode[i-1].x&&sx1)ans=min(ans,dp(i-1,i-1,0)+cost(sx,node[i-1].x,-1,-1));
                if(i<=n)ans=min(ans,dp(i,i,0)+cost(sx,node[i].x,-1,-1));//这个地方没有抄到。。注意要是i<=n;
                break;
            }
        }
        printf("%.0lf\n",floor(ans+sumc));
    }
}

 

 

 

你可能感兴趣的:(uva 1336 修长城 dayly training dp)