【HNOI2017】影魔
题目描述
输入
输出
样例输入
样例输出
提示
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef long long ll; 7 const int N=200005; 8 int gi(){ 9 int str=0;char ch=getchar(); 10 while(ch>'9' || ch<'0')ch=getchar(); 11 while(ch>='0' && ch<='9')str=str*10+ch-'0',ch=getchar(); 12 return str; 13 } 14 int L[N],R[N],n,m,p1,p2,a[N],q[N]; 15 ll Tree[N*4],mark[N*4],ans[N]; 16 struct AKK{ 17 int id,l,r; 18 }ques[N]; 19 #define ls (node<<1) 20 #define rs (node<<1|1) 21 void pushdown(int node,int l,int r) 22 { 23 if(!mark[node])return ; 24 int sizels=((l+r)>>1)-l+1,sizers=r-((l+r)>>1); 25 Tree[ls]+=mark[node]*sizels;Tree[rs]+=mark[node]*sizers; 26 mark[ls]+=mark[node];mark[rs]+=mark[node]; 27 mark[node]=0; 28 } 29 void updata(int node){Tree[node]=Tree[ls]+Tree[rs];} 30 void change(int l,int r,int node,int sa,int se,int ad) 31 { 32 if(r<sa || l>se)return ; 33 if(sa<=l && r<=se) 34 { 35 Tree[node]+=(ll)ad*(r-l+1);mark[node]+=ad; 36 return ; 37 } 38 pushdown(node,l,r); 39 int mid=(l+r)>>1; 40 change(l,mid,ls,sa,se,ad); 41 change(mid+1,r,rs,sa,se,ad); 42 updata(node); 43 } 44 ll getsum(int l,int r,int node,int sa,int se) 45 { 46 if(r<sa || l>se)return 0; 47 if(sa<=l && r<=se)return Tree[node]; 48 pushdown(node,l,r); 49 int mid=(l+r)>>1; 50 return getsum(l,mid,ls,sa,se)+getsum(mid+1,r,rs,sa,se); 51 updata(node); 52 } 53 void pf() 54 { 55 int r=0; 56 q[r]=n+1; 57 for(int i=n;i>=1;i--) 58 { 59 while(r>0 && a[i]>=a[q[r]])r--; 60 R[i]=q[r]; 61 q[++r]=i; 62 } 63 } 64 void work() 65 { 66 pf(); 67 int k=m; 68 for(int i=n;i>=1;i--) 69 { 70 if(i+1<=R[i]-1) 71 change(1,n+1,1,i+1,R[i]-1,p2);change(1,n+1,1,R[i],R[i],p1-p2); 72 while(k>0 && ques[k].l==i)ans[ques[k].id]+=getsum(1,n+1,1,1,ques[k].r),k--; 73 } 74 } 75 void Clear(){memset(Tree,0,sizeof(Tree));memset(mark,0,sizeof(mark));} 76 bool comp(const AKK &p,const AKK &qq){return p.l<qq.l;} 77 int main() 78 { 79 n=gi();m=gi();p1=gi();p2=gi(); 80 for(int i=1; i<=n; i++)a[i]=gi(); 81 for(int i=1;i<=m;i++)ques[i].l=gi(),ques[i].r=gi(),ques[i].id=i; 82 sort(ques+1,ques+m+1,comp); 83 work(); 84 for(int i=1;i<=m;i++)ques[i].l=n+1-ques[i].l,ques[i].r=n+1-ques[i].r,swap(ques[i].l,ques[i].r); 85 reverse(a+1,a+n+1); 86 sort(ques+1,ques+m+1,comp); 87 Clear(); 88 work(); 89 for(int i=1;i<=m;i++)printf("%lld\n",ans[i]); 90 return 0; 91 }
转载于:https://www.cnblogs.com/Yuzao/p/6930974.html
【HNOI2017】影魔相关推荐
- [AH2017/HNOI2017] 影魔
[AH2017/HNOI2017]影魔 30pts 暴力在每个区间中枚举点对(a,b)(a,b)(a,b)并查询点对之间的最大值maxmaxmax,若max<=min(a,b)max<=m ...
- 【BZOJ4826】[Hnoi2017]影魔 单调栈+扫描线
[BZOJ4826][Hnoi2017]影魔 Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝 ...
- [AH2017/HNOI2017]影魔
P3722 [AH2017/HNOI2017]影魔 题解: 法一: [bzoj4826][HNOI2017]影魔 直接转化成区间内单点的贡献, 分开p1,p2考虑 而min(ai,aj),max(ai ...
- [BZOJ4826][HNOI2017]影魔(主席树)
4826: [Hnoi2017]影魔 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 669 Solved: 384 [Submit][Status ...
- bzoj 4826: [Hnoi2017]影魔
Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样 的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个 ...
- HNOI2017影魔
洛谷传送门 这是一道相当不错的思维题目,让我在那个周日整天都处于影魔的恐惧下 . 前置知识 线段树/树状数组/主席树等等,思路都是类似, 任选其一即可 (本文将使用树状数组,因为它好写) . 单调栈( ...
- [HNOI2017]影魔
题目背景 影魔,奈文摩尔,据说有着一个诗人的灵魂. 事实上,他吞噬的诗人灵魂早已成千上万. 千百年来,他收集了各式各样的灵魂,包括诗人. 牧师. 帝王. 乞丐. 奴隶. 罪人,当然,还有英雄. 题目描 ...
- Bzoj4826 [Hnoi2017]影魔
Time Limit: 20 Sec Memory Limit: 512 MB Submit: 425 Solved: 244 Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实 ...
- [题解]bzoj4826 HNOI2017 影魔
Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵 ...
- P3722 [AH2017/HNOI2017]影魔(树状数组)
题目描述 奈文摩尔有 n 个灵魂,他们在影魔宽广的体内可以排成一排,从左至右标号 1 到 n.第 i 个灵魂的战斗力为 ki ,灵魂们以点对的形式为影魔提供攻击力.对于灵魂对 i,j (i<j) ...
最新文章
- Java基础-重写方法
- 【图像分类】 基于Pytorch的细粒度图像分类实战
- 快嘉开发框架1.0和示例介绍及使用说明
- 前端js实现字符串/图片/excel文件下载
- 剥开浮躁表面,直指金融科技内心
- 巧用推荐墙入口,APP轻松盈利
- java jar包存放位置_获得运行jar包存放路径的方法
- 【学术】SCI 写作常用句式总结一(Introduction篇)
- 创建设备文件节点_使用device_create实例分析
- 注解(Annotation)自定义注解入门(转)
- 【贪心算法】跳跃游戏
- r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
- 计算机组成原理cpi是什么意思,计算机组成原理课程CPI教学方法探索
- ios 判断打开相机权限_iOS 获取用户是否有(相册/相机)权限
- 《让时间陪你慢慢变富》有感
- ARM汇编寄存器和常用指令详解
- Shellshock Lab
- ocx 访问 html,HTML 加载ocx VB编写的控件
- 大话 Druid 存储结构
- YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)...
热门文章
- 发现Tensorflow
- SQL 使用总结二 ( 不同库的日期总结)
- the deep ritz method论文梳理
- netbeans 添加gif图片_史上功能最强最全最好用的GIF动画制作手机app——GIF豆豆——手机ae...
- bootstrap表单拖拽生成器插件_web前端常用插件、工具类库汇总,新手必收藏!!!...
- wifi频率和zigbee干扰_浅谈ZigBee和Wi—Fi的共存和干扰
- html基本结构(头部需加上样式表),HTML基本结构、头部、注释(示例代码)
- html字体颜色选择插件,css3改变选择文本背景颜色
- txt格式转换成prg_用批处理打印磁盘上所有的.PRG文件
- 常用傅里叶变换公式大全_高二数学常用导数公式大全