关于 wyh的问题的疑惑

求大佬解答,为什么我这串代码不加abs全对,加了全错,保证加了abs里的值全为正数?

代码如下:

#include<bits/stdc++.h>

#define all(x) x.begin(),x.end()

#define int long long

using namespace std;

const int N=1e3+5,INF=0x3f3f3f3fLL,M=2e4+5,mod=3600;

int n,st; int f[N][N][2],d[N],w[N],s[N];

signed main()

{

ios::sync_with_stdio(false);

cin.tie(0),cout.tie(0);

while(cin>>n)

{

cin>>st;

for(int i=1;i<=n;i++)

{

cin>>d[i]>>w[i];

s[i]=s[i-1]+w[i];

}

for(int i=1;i<=n;i++)

{

for(int j=1;j<=n;j++)

{

f[i][j][0]=f[i][j][1]=INF;

}

}

f[st][st][0]=f[st][st][1]=0;

for(int len=2;len<=n;len++)

{

for(int i=1;i+len-1<=n;i++)

{

int j=i+len-1;

f[i][j][0]=min(f[i+1][j][0]+abs(d[i+1]-d[i])*(s[n]-s[j]+s[i]),f[i+1][j][1]+abs(d[j]-d[i])*(s[n]-s[j]+s[i]));

f[i][j][1]=min(f[i][j-1][1]+abs(d[j]-d[j-1])*(s[n]-s[j-1]+s[i-1]),f[i][j-1][0]+abs(d[j]-d[i])*(s[n]-s[j-1]+s[i-1]));

}

}

cout<<min(f[1][n][0],f[1][n][1])<<endl;

}

return 0;

}

全部评论

相关推荐

02-14 15:34
门头沟学院 Java
Java抽象带篮子:专业技能怎么写可以看看我发的帖子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务