Codeforces 487B Strip(RMQ)
来源:互联网 发布:朝鲜假钞 知乎 编辑:程序博客网 时间:2024/06/05 17:27
题目链接:Codeforces 487B Strip
#include <cstdio>#include <cstring>#include <stack>#include <vector>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;const int maxr = 20;const int inf = 0x3f3f3f3f;int ca, cd, AS[maxn], DS[maxn];int N, S, L, Db[maxn][maxr], Ds[maxn][maxr], dp[maxn];vector<int> Arr;void init(const vector<int>& arr) {int n = arr.size();for (int i = 1; i < n; i++)Db[i][0] = Ds[i][0] = arr[i];for (int j = 1; (1<<j) <= n; j++) {for (int i = 0; i + (1<<j) - 1 < n; i++) {Ds[i][j] = min(Ds[i][j-1], Ds[i+(1<<(j-1))][j-1]);Db[i][j] = max(Db[i][j-1], Db[i+(1<<(j-1))][j-1]);}}}int query(int l, int r) {int k = 0;while ((1<<(k+1)) <= r - l + 1)k++;return max(Db[l][k], Db[r-(1<<k)+1][k]) - min(Ds[l][k], Ds[r-(1<<k)+1][k]);}void solve() {memset(dp, inf, sizeof(dp));int mv = dp[0] = 0;for (int i = L; i <= N; i++) {while (i - mv >= L && (query(mv + 1, i) > S || dp[mv] == inf))mv++;if (i - mv >= L)dp[i] = min(dp[i], dp[mv] + 1);//printf("%d\n", dp[i]);}if (dp[N] == inf)dp[N] = -1;printf("%d\n", dp[N]);}int main () {int x;scanf("%d%d%d", &N, &S, &L);Arr.push_back(0);for (int i = 0; i < N; i++) {scanf("%d", &x);Arr.push_back(x);}init(Arr);solve();return 0;}
0 0
- Codeforces 487B Strip(RMQ)
- codeforces 487B B. Strip(rmq+线段树+二分)
- Codeforces 487b Strip, dp + RMQ(经典)
- CodeForces 487B Strip
- codeforces 487 B. Strip
- CodeForces 487B Strip
- codeforces 487B Strip dp
- 【DP】 codeforces 487B Strip
- CodeForces 487B RMQ贪心
- Codeforces 488D Strip【dp+RMQ--------ST】
- Codeforces 488D Strip【dp+RMQ--------ST】
- Codeforces 487B. Strip DP+线段树+二分
- 【Monotonic-queue】【dp】【Segment-tree】【STL】Codeforces 487B - Strip
- CodeForces 487 B.Strip(dp+尺取+set)
- Codeforces Round #278 (Div. 1) B. Strip
- codeforces 332B B. Maximum Absurdity(rmq)
- Codeforces 487B. Strip(求区间最值+线段树上的dp)
- Codeforces Round #278 (Div. 1) B. Strip(Dp+multiset维护)
- 欢迎使用CSDN-markdown编辑器
- 【转载】Struts2中的OGNL详解
- servlet容器及其架构
- bootstrap 的 collapse 使用示例
- Android学习笔记 - socket编程实例
- Codeforces 487B Strip(RMQ)
- 结训总结
- GridBagLayout的使用方法
- Building Apache Thrift on CentOS 6.5
- No.1 iOS---UI(day1.1)code review
- Merge Two Sorted Lists
- 论复杂密码的重要性
- ASP.NET MVC 中 如何将同一个form post到不同的action
- Linux6平台Oracle11g RAC 安装GI PSU后无法打开