博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #278 (Div. 2) d
阅读量:6481 次
发布时间:2019-06-23

本文共 1291 字,大约阅读时间需要 4 分钟。

hot3.png

/** * @brief Codeforces Round #278 (Div. 2) d * @file d.c * @author 面码 * @created 2014/11/26 10:07 * @edited  2014/11/26 10:07 * @type dp  * @note *      自己的TL了,看了别人代码写的 *      该代码主要是在dp的基础上使用stl来提速 *      dp需辅助提速,但内存又不能爆掉是该题目的卡点 = = */#include 
#include 
#include 
#include 
using namespace std;#define max(a, b)  ((a) > (b) ? (a) : (b))#define min(a, b)  ((a) > (b) ? (b) : (a)) #define abs(a)     ((a) >  0  ? (a) : (0 - (a)))#define CLR(vec)   memset(vec, 0, sizeof(vec))#define MAXN 100010#define MAXS 1000000010#define MAXl 100010typedef pair
 bbq;int dp[MAXN];int in[MAXN];set
 R, S;int n, s, l;int main(){    int i, j;#ifdef DEBUG    freopen("./in",  "r", stdin);    freopen("./out", "w", stdout);#endif    scanf("%d%d%d", &n, &s, &l);    for(i = 1; i <= n; i++)        scanf("%d", &in[i]);    j = 1;    for(i = 1; i <= n; i++){        S.insert(bbq(in[i], i));        while(!S.empty() && S.rbegin()->first - S.begin()->first > s ){            S.erase(bbq(in[j], j));            j++;        }        if(i >= l && -1 != dp[i - l])            R.insert(bbq(dp[i - l], i - l));        while(!R.empty() && R.begin()->second < j - 1)            R.erase(R.begin());        dp[i] = R.empty() ? -1 : R.begin()->first + 1;    }    printf("%d\n", dp[n]);    return 0;}

转载于:https://my.oschina.net/u/572632/blog/348884

你可能感兴趣的文章
PS 多次剪裁同一图片
查看>>
MusicXML 3.0 (2) - 调号
查看>>
黑科技揭秘:眼科大夫如何应用5G+8K完成远程会诊?
查看>>
从零搭建webpack前端类库脚手架[3]-强悍的babel
查看>>
[LeetCode/LintCode] Is Subsequence
查看>>
javascript cookie的传统用法,用cookie做一个记住用户名的小功能
查看>>
面试官!让我们聊聊正则
查看>>
厚颜无耻的免费使用Visio和project2016
查看>>
数组去重方法小结
查看>>
Async 函数的使用及简单实现
查看>>
Android开源库的制作
查看>>
Android 架构组件官方文档01——LifeCycle
查看>>
Mongoose 5.1.5 简易入门
查看>>
如何站在大数据的角度看100000个故事
查看>>
作为前端,如何帮帝都的朋友租到合适的房子
查看>>
ubuntu中swap(虚拟内存)设置
查看>>
JavaScript函数
查看>>
【算】最短路径问题
查看>>
ts学习笔记
查看>>
小程序和腾讯地图联合使用
查看>>