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

宿迁装饰网站建设公司排名制作链接的app的软件

宿迁装饰网站建设公司排名,制作链接的app的软件,wordpress 插件安装,wordpress不能更新插件题目如下 数据范围 观察数据范围理论上平方复杂度的算法计算次数逼近1e9还不至于超时,但是由于有mod 1e9导致超时。所以本题不能靠暴力枚举来解决。 所以我们可以思考如何在枚举上面减少计算次数:第一种枚举法:最外层i控制子数组的左边界&…

题目如下
在这里插入图片描述

数据范围
在这里插入图片描述

  观察数据范围理论上平方复杂度的算法计算次数逼近1e9还不至于超时,但是由于有mod 1e9导致超时。所以本题不能靠暴力枚举来解决。
所以我们可以思考如何在枚举上面减少计算次数:第一种枚举法:最外层i控制子数组的左边界,内层则从左边界开始遍历到最后其中维持最小值。如此可以枚举完所有的子数组,显然超时。这种枚举法不好在忽略了一个值可能是很多子数组的最小值。例如 在数组[3,1,2,4]中子数组[3,1,2] [1,2]最小值都是1所以不方便减少计算次数。第二种枚举法:因为子数组长度最小可以为1所以每个数都可以至少是一个子数组的最小值,我们可以通过从一个数出发向左向右寻找第一个小于这个数的左右边界。我们只需要算出在这个边界能形成多少个包含i的子数组就可以得到以arr[i]为最小值的子数组的数量。(即从[l,i] [i,r]各自选1个值就行 排列组合的思想)显然也超时,但是很好利用了特性。
所以我们来思考如何减少第二种枚举法的复杂度:因为向左向右寻找的思路一样所以这里就仅说明向左寻找的思路。显然每次向左搜索第一个小于这个数的重复计算太多,我们可以想想几种情况如果数组有(i,j都是下标且i < j)那么我们令i j对应的第一个小于的坐标为i1 和 j1,当arr[i] > arr[j]时 有i1 >= j1(j >= j1) 我们记为1情况当arr[i] <= arr[j]时 有i1 <= j1 我们记为2情况
从两个情况我们可以看出j可能会被i作为答案所以我们先存起来,如果j不是i答案那么i的答案i1必然在j1前所以寻找j1所排除的与i1并无关系甚至推广来说只要当前处理的i下标大于j那么因为j排掉的答案并不是i的答案。换句话说我们处理完j以后只需要把j存起来以防万一i的答案是j就行。所以我们可以考虑引入单调栈从左到右遍历数组(按严格递增的趋势)对每个处理的i如果栈顶大于等于就出栈直到栈空或者栈顶小于arr[i]。如此便确定左边界,当然我们采用左开右开的区间方便计算(使用-1作为哨兵)。右边界同理只不过是从右往左遍历这里不多赘述。那么这里还要注意处理重复区间:当我们允许左边界包含重复数字时就不能让右边界包含了,假设数组存在多个重复值任选两个两个一样的数,如果我们让左右都可以包含重复值就会产生重复计算所以只能让一边可以包含重复值。

通过代码

class Solution {
public:int sumSubarrayMins(vector<int>& arr) {int n = arr.size(),mod = (1e9 + 7),ans = 0;vector<int> l(n),r(n);stack<int> s;for (int i = 0; i < n; i++) {while(!s.empty() && arr[s.top()] > arr[i]){s.pop();}l[i] = (s.empty())?-1:s.top();s.push(i);}s = stack<int>();for (int i = n - 1; i >= 0; i--) {while(!s.empty() && arr[s.top()] >= arr[i]){s.pop();}r[i] = (s.empty())?n:s.top();s.push(i);}for(int i = 0;i < n;i++){ans = (ans + (long long)arr[i] * (i - l[i]) * (r[i] - i)) % mod;}return ans; }};

在这里插入图片描述

http://www.hrbkazy.com/news/18829.html

相关文章:

  • 什么是内容管理系统seo搜索引擎优化工程师招聘
  • 抚州市做棋牌网站汕头seo外包机构
  • 杭州文化传媒类高端网站建设公司公司的公关
  • 网站挂黑链工具seo搜索引擎优化课程总结
  • 网站域名解析登陆英国搜索引擎
  • 网站排名优化课程人民日报今日头条新闻
  • 网站js修改头像代码长尾关键词查询工具
  • 给我一个可以在线观看的免费aso优化教程
  • 肇东网站建设外链seo服务
  • 中国人民银行网站查询株洲seo排名
  • 中山网站建设方案托管seo关键字优化价格
  • 重庆开县网站建设报价培训优化
  • 做ppt高手_一定要常去这八个网站厦门seo网站管理
  • 查询网站备案号app郑州seo培训
  • 一站式服务大厅官网郑州seo排名哪有
  • 网站制作 深圳怎么做好销售
  • 微商建立网站杭州网站优化推荐
  • 广州新际网站建设百度图片收录提交入口
  • 蜗牛星际做网站服务器网页模板素材
  • 个人可以备案网站网站seo的优化怎么做
  • java做网站好还是asp好网页设计怎么做
  • 六安亿联网络科技有限公司seo培训讲师招聘
  • 网站如何做触屏滑动数据分析网站
  • 做淘宝网站用什么软件线上营销工具
  • 注册公司注册资金最低多少钱优化设计三年级上册答案语文
  • 淘宝可以到哪些网站做推广深圳搜索seo优化排名
  • 太原搭建网站的公司哪家好网页设计代码
  • 做网站怎样盈利嘉兴网站建设方案优化
  • 成都网站建设推进方案星巴克营销策划方案
  • 百度网站模板免费下载seo学校培训课程