http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1205

破oj,%lld过不了,改成cout或者%I64D就过了,害的老子调试了这么长时间,而且这题的数据也比较水,大数据根本就没有几组,我都开始怀疑人生了!!!!

值得注意的几点,第一,一定要手推一遍样例,第二元素重复的时候一定需要想清楚,因为一个区间只能用来算一次,所以要在往左的时候应该是到等于,往右的时候不能到等于!而且最好是降低常数复杂度,一种顺序更新的时候最好就把大于和小于的同时都记录下来,可以开两个栈嘛!

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+10;
struct node{ll v,p;
}a[maxn];
ll l[maxn],r[maxn];
ll t,n;
int main(){cin>>t;int count=1;while(t--){stack<node>q;memset(a,0,sizeof(a));scanf("%lld",&n);for(int i=1;i<=n;i++) {scanf("%lld",&a[i].v);a[i].p=i;}while(q.size()!=0) q.pop();q.push(a[1]);l[1]=0;for(int i=2;i<=n;i++){while(q.size()!=0&&q.top().v>=a[i].v){q.pop();}if(q.size()!=0)l[i]=q.top().p;else l[i]=0;q.push(a[i]);}while(q.size()!=0) q.pop();q.push(a[n]);r[n]=n+1;for(int i=n-1;i>=1;i--){while(q.size()!=0&&q.top().v>a[i].v){q.pop();}if(q.size()!=0)r[i]=q.top().p;else r[i]=n+1;q.push(a[i]);}/*for(int i=1;i<=n;i++){cout<<"==  "<<l[i]<<" "<<r[i]<<" "<<(r[i]-i)*(i-l[i])<<endl;}*/ll ans=0;for(ll i=1;i<=n;i++){ans-=a[i].v*(r[i]-i)*(i-l[i]);}while(q.size()!=0) q.pop();q.push(a[1]);l[1]=0;for(int i=2;i<=n;i++){while(q.size()!=0&&q.top().v<=a[i].v){q.pop();}if(q.size()!=0)l[i]=q.top().p;else l[i]=0;q.push(a[i]);}while(q.size()!=0) q.pop();q.push(a[n]);r[n]=n+1;for(int i=n-1;i>=1;i--){while(q.size()!=0&&q.top().v<a[i].v){q.pop();}if(q.size()!=0)r[i]=q.top().p;else r[i]=n+1;q.push(a[i]);}/*    for(int i=1;i<=n;i++){cout<<"==  "<<l[i]<<" "<<r[i]<<" "<<(r[i]-i)*(i-l[i])<<endl;}*/for(ll i=1;i<=n;i++){ans+=a[i].v*(r[i]-i)*(i-l[i]);}ans+=(ll)(1+n)*n/2;printf("Case %d: ",count++);printf("%I64d\n",ans);}
}

XTU 1205 Range相关推荐

  1. [转]python各模块的学习

    [-] 01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 ...

  2. Go 知识点(06)— for range 切片并对切片进行 append 不会造成死循环

    想想下面代码会发生什么? func main() {a := []int{1, 2, 3}for _, v := range a {a = append(a, v)fmt.Println(" ...

  3. Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异

    1. 迭代对象是切片,迭代过程中修改切片 package mainimport "fmt"func main() {// 示例1.numbers1 := []int{1, 2, 3 ...

  4. pytorch.range() 和 pytorch.arange() 的区别

    总结: torch.range(start=1, end=6) 的结果是会包含end的, 而torch.arange(start=1, end=6)的结果并不包含end. 两者创建的tensor的类型 ...

  5. Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?

    1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...

  6. Go 学习笔记(29)— range 作用于字符串、数组、切片、字典、通道

    1. 使用说明 range 应用于不同数据类型时,类似迭代器操作,返回 (索引, 值) 或 (键, 值). 下表是对应的结构: type 1st value 2nd value string inde ...

  7. Go 学习笔记(9)— 循环(for、for range访问数组、切片、字符串和通道、goto、continue、break)

    1. for 循环格式 Go 语言仅支持一种循环语句即 for 循环,它有 3 种形式,只有其中的一种使用分号. 和 C 语言的 for 一样 for init; condition; post { ...

  8. usaco Home on the Range

    dp关系式搞清楚就行了,我看题解的没想出来.a[i][j]=min(a[i+1][j],a[i][j+1],a[i+1][j+1])+1;他的右方下方右下方保证了他可以延伸的长度. /* ID: ji ...

  9. opencv中Range类的使用

    #include<iostream> #include<opencv2/opencv.hpp> #include<vector> using namespace s ...

  10. python for i in range 三维_python中的三维卷积

    虽然循环可以工作,但跟踪嵌套循环也很困难.您可以考虑调用卷积定理来更容易地执行卷积.见here.在 使用numpy的fft模块,您可以计算原始图像堆栈的n维离散Fourier变换,并将其乘以大小相同的 ...

最新文章

  1. python生成试卷制卷系统_Python 读写文件 小应用:生成随机的测验试卷文件
  2. go语言笔记——切片函数常见操作,增删改查和搜索、排序
  3. Linux内核spin_lock与spin_lock_irq分析
  4. 【机器视觉】 endwhile算子
  5. solution for python can not import local module
  6. 使用X-shell管理员root连接ubuntu17.10服务器拒绝密码的一个失误!
  7. 单元格 编辑 获取_Excel批量导入图片,还能一键将图片固定到单元格!这是什么操作.........
  8. 设计模式之(Composite)组合模式
  9. 问题记录:net::ERR_CERT_DATE_INVALID
  10. Matlab转C/C++/Cmex文件加速运行方法
  11. 离散数学2:命题逻辑的推理
  12. JAVA编程语言基础第六章
  13. 什么是流程管理系统?
  14. C++ operator
  15. VS2019 后面有“::”的名称一定是类名或命名空间名 解决办法汇总
  16. 如何用发票查验软件快速批量查验发票(返回官网查验截图)
  17. [转] 用小铲子挖大坑
  18. git 合并部分代码
  19. MySQL数据备份命令
  20. 计算机初学者的干货(写的非常好本人推荐)

热门文章

  1. 马蜂窝ABTest多层分流系统的设计与实现
  2. 【中医学】11 常见病证-2:心悸:眩晕:中风:血证:黄疸:痹证:消渴
  3. 前后端分离 -- 深入浅出 Spring Boot + Vue 实现工程项目进度管理系统 Vue不过如此~
  4. NetFlow Analyzer无线网络管理
  5. mac可装云服务器_转载一篇用苹果电脑mac系统配置阿里云服务器ecs的教程攻略
  6. 微信公众号微信网页开发网页授权/回调自定义参数问题处理方法。
  7. python微信投票该用户被锁定、恢复时间_微信登录多久恢复正常
  8. celery异步发送邮箱
  9. 平均绝对误差python_机器学习回归模型的常用评价指标(8):均方误差MSE、平均绝对误差MAE、平均绝对比例误差MAPE、相关系数R2,方差,相关性...
  10. 均方根误差,平均绝对误差,均方误差,标准差计算方法