电信天翼云1+1+N+N+C是什么意思

Joh养了一只叫Joseph的奶牛一佽她去放牛,来到一个非常长的一片地上面有块地方长了茂盛的草。我们可以认为草地是一个数轴上的一些点Joseph看到这些草非常兴奋,咜想把它们全部吃光于是它开始左右行走,吃草Joh和Joseph开始的时候站在p位置。Joseph的移动速度是一个单位时间一个单位距离不幸的是,草如果长时间不吃就会腐败。我们定义一堆草的腐败值是从Joseph开始吃草到吃到这堆草的总时间Joseph可不想吃太腐败的草,它请Joh帮它安排一个路线使得它吃完所有的草后,总腐败值最小Joh的数学很烂,她不知道该怎样做你能帮她么?

第一行两个整数p。表示有处草地奶牛初始位置为p。(\(<=1000\))

输出一个整数表示最小总腐败值。

大致题意就是你的初始坐标为\(x\),你要去数轴上的\(\)个点问你到达所有点嘚时间总和最小是多少。

直接贪心不可行所以考虑dp。

关注到一个性质如果到目前为止,奶牛吃过最左的草堆编号为\(l\)吃过最右的草堆編号为\(r\),则如果奶牛不是傻它肯定把\([l,r]\)的草堆都吃过了因为它吃草速度是瞬时的,都经过了肯定要嫖一口

那很明显应该是个区间dp了。

不難定义出状态\(f[0/1][i][j]\)表示已经吃完\([i,j]\)的草了且现在在左端i(0),在右端j(1)所需的最少时间和

转移根据意义模拟一下就好了假如我现在从区间的某端\(k\)转移到某点\(l\),则花去时间为\(dis[k][l]\)在这个时间内除了区间\([i,j]\),其他所有草堆的腐败值都增加了1

具体转移顺序可以打个记搜。也可以直接循环轉移——枚举区间长度再枚举左端点。然后对于这道题内部再分类讨论一下处于左右端位置即可时间复杂度为\(O(^2)\)

参考资料

 

随机推荐