AcWing 329. 围栏障碍训练场

2021-03-17 17:26

阅读:689

标签:print   oid   iostream   题目   names   inline   最小   模拟   scanf   

大型补档计划

题目链接

考虑模拟这个过程。
\(f[i][0 / 1]\) 表示从第 \(i\) 个围栏的 左/右端点开始往下走,走到原点的最小花费。
转移很容易想到,就是考虑找到一个往下走第一个碰到的围栏 \(j (j (若没有可以直接走到原点)。
然后 \(f[i][0 / 1] = min(f[j][0 / 1] + d_{相对距离})\)。考虑快速找到往下走最先遇到的围栏,就是一个线段覆盖动态问题,用线段树维护即可。

#include 
#include 
using namespace std;
const int N = 30005, S = 200005, P = 100001;
typedef long long LL;
int n, m = P * 2, s, L[N], R[N], id[S > 1; 
    if (x > 1;
    if (x 

AcWing 329. 围栏障碍训练场

标签:print   oid   iostream   题目   names   inline   最小   模拟   scanf   

原文地址:https://www.cnblogs.com/dmoransky/p/12380526.html


评论


亲,登录后才可以留言!