自闭ing......大佬或蒟蒻帮忙看一下吧!(40分)

P3957 [NOIP2017 普及组] 跳房子

@[一只书虫仔](/user/114914) 没事!
by NaN_HQJ2007_NaN @ 2020-04-21 16:01:00


@[黄秋杰](/user/173864) 不行,太弱不会,再见 /kk/kk
by 一只书虫仔 @ 2020-04-21 16:01:27


二分边界错了吧
by Retucl @ 2020-04-21 16:27:08


@[PinkTree](/user/241090) $\Large\color{Green}{t_h^{a^{\large{n}}}{k_s}!}$
by NaN_HQJ2007_NaN @ 2020-04-21 16:45:29


又来晚了…… ~~中排谔谔~~
by derta @ 2020-04-22 07:15:23


@[wang_yue_xi](/user/225734) $\Huge{HELP}$
by NaN_HQJ2007_NaN @ 2020-04-22 10:45:18


```cpp memset(dp, CHAR_MIN, sizeof(dp)); ```
by derta @ 2020-04-22 18:27:44


~~WA的更多了~~
by derta @ 2020-04-22 18:30:04


wtcl,看不懂dalao的代码 珂以参考一下本蒟蒻的Code: ```cpp // f[i] = max{f[j]} + s[i] | i - (d + g) <= j <= i - max(d - g, 1) #include <iostream> #include <cstring> #include <algorithm> int n, d, k, x[500005], s[500005], l, r, mid, q[500005], ans; long long f[500005], sum; const long long INF = -9187201950435737472; inline void equal_max(int& x, int y) { if(x < y) x = y; } bool check(int g) { memset(f, 128, sizeof(f)); f[0] = 0; long long m = 0; int j = 0, head = 1, tail = 1; for(int i = 1; i <= n; ++i) { while(j < i && x[j] <= x[i] - std::max(d - g, 1)) { if(f[j] != INF) { while(head != tail && f[q[tail - 1]] <= f[j]) --tail; q[tail++] = j; } ++j; } while(head != tail && x[q[head]] < x[i] - d - g) ++head; if(head != tail) { f[i] = f[q[head]] + s[i]; if(m < f[i]) m = f[i]; } } return m >= k; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(0), std::cout.tie(0); std::cin >> n >> d >> k; for(int i = 1; i <= n; ++i) { std::cin >> x[i] >> s[i]; if(s[i] > 0) sum += s[i]; } if(sum < k) { std::cout << -1; return 0; } r = 100000005; while(l <= r) { mid = (l + r) >> 1; if(check(mid)) { ans = mid; r = mid - 1; } else l = mid + 1; } if(ans == 0) ans = r; std::cout << ans; return 0; } ```
by derta @ 2020-04-22 18:33:24


@[wang_yue_xi](/user/225734) $\color{Red}{\LARGE{d_{\large a}}^{\LARGE{l}_{a_{\Huge{o}}}}\over{\color{Green}{\huge{T}^{\large}{q}_{\small}{L}}}}!!!!$
by NaN_HQJ2007_NaN @ 2020-04-22 20:25:59


上一页 | 下一页