当前位置: 首页 > news >正文

济南手机网站定制价格/友情链接是什么

济南手机网站定制价格,友情链接是什么,东三省网站建设公司,东莞网站设地题意&#xff1a;给出一个数列&#xff0c;问其中存在多少连续子区间&#xff0c;其中子区间的(最大值-最小值)<k 思路&#xff1a;设dp[i]为从区间1到i满足题意条件的解&#xff0c;最终解即为dp[n]&#xff1b; 此外 假设对于arr[i] 往左遍历 一直到arr[r] 此时从区间r到…

题意:给出一个数列,问其中存在多少连续子区间,其中子区间的(最大值-最小值)<k

思路:设dp[i]为从区间1到i满足题意条件的解,最终解即为dp[n];

此外 假设对于arr[i] 往左遍历 一直到arr[r] 此时从区间r到区间i满足(最大值-最小值)<k,再往左一位即越界 或者 不满足条件,此时有 dp[i] = dp[i-1] + i - r + 1;

因为数据量大 往左遍历时 可能会超时 ,所以用rmq打表 查找r时用二分 就过了

代码:

#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <string>
#include <bitset>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <map>
#include <set>
#define sss(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a) memset(a,0,sizeof(a))
#define ss(a,b) scanf("%d%d",&a,&b)
#define s(a) scanf("%d",&a)
#define INF 0x3f3f3f3f
#define w(a) while(a)
#define PI acos(-1.0)
#define LL long long
#define eps 10E-9
#define N 100010
using namespace std;
void mys(int& res) {int flag=0;char ch;while(!(((ch=getchar())>='0'&&ch<='9')||ch=='-'))if(ch==EOF)  res=INF;if(ch=='-')  flag=1;else if(ch>='0'&&ch<='9')  res=ch-'0';while((ch=getchar())>='0'&&ch<='9')  res=res*10+ch-'0';res=flag?-res:res;
}
void myp(int a) {if(a>9)myp(a/10);putchar(a%10+'0');
}
/********************the end of template********************/
int arr[N];
int sm[N][30], bg[N][30];
LL dp[N];
void rmq_init(int n) {for(int i = 0; i < n + 1; i++)   bg[i][0] = sm[i][0] = arr[i];for(int j = 1; (1 << j) <= n + 1; j++) {for(int i = 0; i + (1 << j) - 1 < n + 1; i++) {bg[i][j] = max(bg[i][j - 1], bg[i + (1 << (j - 1))][j - 1]);sm[i][j] = min(sm[i][j - 1], sm[i + (1 << (j - 1))][j - 1]);}}
}
int rmq_min(int left, int right){int kk = 0;w((1 << (kk+1)) <= right - left +1) kk++;return min(sm[left][kk], sm[right - (1<<kk) +1][kk]);
}
int rmq_max(int left, int right){int kk = 0;w((1 << (kk+1)) <= right - left +1) kk++;return max(bg[left][kk], bg[right - (1<<kk) +1][kk]);
}
int getR(int L, int k, int R) {int l = L, r = R, m, ans;while(l <= r) {m = (l + r) >> 1;int view = rmq_max(m, R) - rmq_min(m, R);if(view < k) {ans = m;r = m - 1;}else l = m + 1;}return ans;
}
int main(){int t;s(t);w(t--){int n, k;mem(dp);ss(n, k);for(int i=1; i<=n; i++){s(arr[i]);}rmq_init(n);dp[1] = 1;for(int i=2; i<=n; i++){int R = getR(1, k, i);dp[i] = dp[i-1] + i - R + 1;}cout<<dp[n]<<endl;}return 0;
}

http://www.lbrq.cn/news/777007.html

相关文章:

  • 建个网站做产品怎样/英文关键词seo
  • 做电商有那个网站/大金seo
  • 域名注册过程/seo代码优化步骤
  • 优秀高端网站建设企业/个人发布信息的免费平台
  • wordpress制作网站模板/百度极速版app下载
  • 网红自助下单网站/淘宝搜索关键词排名查询工具
  • 办网站用什么证件/优秀的网络搜索引擎营销案例
  • 宁波网站建设网络推广/传统营销和网络营销的区别
  • 中原区网站建设/网络营销网站推广方法
  • 东莞做营销型网站的/长沙seo推广
  • 张掖网站制作/百度搜索排名与点击有关吗
  • 网站 意义/长安seo排名优化培训
  • wordpress翻译公司网站/下载百度极速版
  • 做网站如何选择关键词/网站优化seo怎么做
  • 做设计找图有哪些网站有哪些问题/十大搜索引擎排名
  • 滁州市建设银行网站/廊坊seo快速排名
  • 利用社交网站做淘宝客/全网推广平台有哪些
  • 商丘企业网站建设服务/山东最新消息今天
  • 优秀网站建设出售/搜索引擎seo如何优化
  • 亚马逊欧洲站/网页设计可以自学吗
  • 成都建设官方网站/游戏优化大师官网
  • 官网的网站设计公司/广州网站营销推广
  • 北京住房和城乡建设委员会网站电话/bing搜索
  • 导购类网站怎么做/济南seo网站排名优化工具
  • 怎么用 java做网站/互联网品牌的快速推广
  • 郑州做网站的公司/百度教育官网登录入口
  • 网站建设中单页源码/深圳电子网络推广查询
  • 收费网站怎么做/seo可以从哪些方面优化
  • 俄罗斯 日本/seo关键词是怎么优化的
  • 网站两侧固定广告代码/淘宝指数查询官网
  • 定制客车系统线上购票系统功能设计
  • Rust学习笔记(一)|Rust初体验 猜数游戏
  • 【Leetcode】随笔
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • MD5:理解MD5 / MD5核心特性 / MD5 在前端开发中的常见用途 / 在线生成MD5 / js-md5
  • Java AI生成长篇小说的实用