网站百度商桥,做电子杂志的网站,湛江seo公司,东莞横沥网站制作https://www.luogu.com.cn/problem/AT_arc120_e
考虑二分时间#xff0c;然后设 d p ( i , 0 ) dp(i,0) dp(i,0) 表示第 i i i 个人开头往左走#xff0c;掉头后剩余步数。 d p ( i , 1 ) dp(i,1) dp(i,1) 表示第 i i i 个人先往右走#xff0c;最多走多少步就有掉头。 …https://www.luogu.com.cn/problem/AT_arc120_e
考虑二分时间然后设 d p ( i , 0 ) dp(i,0) dp(i,0) 表示第 i i i 个人开头往左走掉头后剩余步数。 d p ( i , 1 ) dp(i,1) dp(i,1) 表示第 i i i 个人先往右走最多走多少步就有掉头。
然后在纸上画一画就是小学的相遇问题直接转移即可。
#includebits/stdc.h
using namespace std;
#ifdef LOCAL#define debug(...) fprintf(stdout, ##__VA_ARGS__)
#else#define debug(...) void(0)
#endif
//#define int long long
inline int read(){int x0,f1;char chgetchar(); while(ch0||
ch9){if(ch-)f-1;chgetchar();}while(ch0ch9){
x(x1)(x3)(ch^48);chgetchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
#define fi first
#define se second
//srand(time(0));
#define N 200010
//#define M
//#define mo
void Mn(int a, int b) {if(a -1) ab; else amax(a, b);
}
int n, m, i, j, k, T;
int d[N], dp[N][2], a[N], l ,r, mid; bool check(int t) {memset(dp, -1, sizeof(dp)); dp[1][1]t; for(i2; in; i) {if(dp[i-1][1]!-1) {kdp[i-1][1]; if(k*2d[i]) Mn(dp[i][0], t-d[i]/2);if(k-d[i]/20) Mn(dp[i][1], k-d[i]/2); }if(dp[i-1][0]!-1) {kdp[i-1][0]; if(k*2d[i]) Mn(dp[i][0], k-d[i]/2); if(k-d[i]/20) Mn(dp[i][1], k-d[i]/2); }}return dp[n][0]!-1 || dp[n][1]!-1;
}signed main()
{#ifdef LOCALfreopen(in.txt, r, stdin);freopen(out.txt, w, stdout);#endif
// Tread();
// while(T--) {
//
// }nread(); for(i1; in; i) a[i]read(); for(i2; in; i) d[i]a[i]-a[i-1]; l1; r1e18; while(lr) {mid(lr)1; if(check(mid)) rmid; else lmid1; }printf(%lld, l); return 0;
}