关于 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;

}

全部评论

相关推荐

想起来研0刚刚进组那会儿,住的是一个离学校通勤要一个小时的公寓,每天下班回去后,就只想躺着,心里还一直在想白天的代码怎么改……读研这两年多,感觉跟找了个班上没啥区别,无非是没有钱,无论是实习还是最近出差在合作单位里,能明显感觉到工作产生的负面情绪,是完全无法通过在工作/职场中通过任何的努力或者调整而得到什么所谓的改善,它只能被你工作以外的生活对冲掉。最近刷小红书,会看到一些带着职场关键词的信息,就是一些教学,说什么“职场智慧”,教你怎么调整心态减少内耗。比如什么“打工人要佛系一点,不要太有责任心”,“别在工作里找人生意义”,还有那句经典的“带着离职的心态上班,瞬间治愈焦虑”……你说这些东西,有用吗?嗯……可能吧,但就像给大病贴创可贴——管不了根本。只要你一心扑在工作上,把它当成生活的核心,下了班就只会刷手机、倒头睡觉,那你情绪不崩才怪呢。你每在职场受的一丁点委屈,都会被生活里无限放大,结果你根本没法脱身。那换个思路——上班难免糟心,那就让它糟心呗,咱也别指望它突然变香甜。关键是,下了班你要整点能让自己心花怒放的事情!追星也好,撸猫也罢,约饭喝酒、买新衣服、找拍照机位、琢磨下一站旅行去哪,哪怕就是天天等快递拆盲盒……有了这些“精神支点”,你会发现你的世界变大了,生活评价体系更丰富了,工作自然就缩成了一个小角落,那由它带来的烦恼就会被你更丰富的生命体验所稀释掉。所以啊,真要是工作让你不开心了,别再硬撑着非要在职场找出口、死气白咧的琢磨他了。想要活得快乐,答案其实很简单:去找到那些能让你发光的生活热爱,人生的解药,全都在工作之外#工作两年想退休了##我的求职思考##如何排解工作中的焦虑##牛客解忧铺#
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-06 20:54
tplink联洲 嵌入式硬件工程师 27*16 硕士海归
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务