51Nod 1593 公园晨跑(RMQ,ST表)

51Nod 1593 公园晨跑(RMQ,ST表)

http://www.51nod.com/Challenge/Problem.html#!#problemId=1593

思路

关于ST表,建议看这篇博客:https://www.cnblogs.com/YSFAC/p/7189571.html

参考胡小兔大佬的题解搞定了,写的很好,不妨看下,这里就不罗嗦了

 1 #define IO std::ios::sync_with_stdio(0);
 2 #include <bits/stdc++.h>
 3 #define iter ::iterator
 4 using namespace  std;
 5 typedef long long ll;
 6 typedef pair<ll,ll>P;
 7 #define pb push_back
 8 #define se second
 9 #define fi first
10 #define rs o*2+1
11 #define ls o*2
12 const ll inf=0x7fffffffffffffff;
13 const int N=2e5+5;
14 ll d[N],h[N],a[N],b[N];
15 ll n,q;
16 ll ma[N][20],mi[N][20],lg[N];
17 int check(int x,int y,int z){
18     if(z==1)return a[x]>a[y]?x:y;
19     return b[x]<b[y]?x:y;
20 }
21 void init(){
22     a[0]=-inf,b[0]=inf;
23     ll s=0;
24     for(ll i=1;i<=2*n;i++){
25         s+=d[i];
26         a[i]=s+h[i];
27         b[i]=s-h[i];
28         ma[i][0]=mi[i][0]=i;
29     }
30     for(ll j=1,i=0;j<=2*n;j++){
31         lg[j]=1<<(i+1)==j?++i:i;
32         //printf("j=%d: %d\n",j,lg[j]);
33     }
34     for(int j=1;(1<<j)<=2*n;j++){
35         for(int i=1;i+(1<<j)-1<=2*n;i++){
36             ma[i][j]=check(ma[i][j-1],ma[i+(1<<(j-1))][j-1],1);
37             mi[i][j]=check(mi[i][j-1],mi[i+(1<<(j-1))][j-1],0);
38         }
39     }
40 }
41 ll getma(int l,int r){
42     if(l>r)return 0;
43     int j=lg[r-l+1];
44     return check(ma[l][j],ma[r-(1<<j)+1][j],1);
45 }
46 ll getmi(int l,int r){
47     if(l>r)return 0;
48     int j=lg[r-l+1];
49     return check(mi[l][j],ma[r-(1<<j)+1][j],0);
50 }
51 ll query(int l,int r){
52     int x=getma(l,r);
53     int y=getmi(l,r);
54     if(x!=y)return a[x]-b[y];
55     int x1=check(getma(l,x-1),getma(x+1,r),1);
56     int y1=check(getmi(l,x-1),getmi(x+1,r),0);
57     return max(a[x1]-b[y],a[x]-b[y1]);
58 }
59 int main(){
60     scanf("%d%d",&n,&q);
61     for(int i=1;i<=n;i++){
62         int x=i%n+1;
63         int y=i%n+1+n;
64         scanf("%lld",&d[x]);
65         d[y]=d[x];
66     }
67     for(int i=1;i<=n;i++){
68         scanf("%lld",&h[i]);
69         h[i]*=2;
70         h[i+n]=h[i];
71     }
72     init();
73     while(q--){
74         int x,y;
75         scanf("%d%d",&x,&y);
76         if(x>y)printf("%lld\n",query(y+1,x-1));
77         else printf("%lld\n",query(y+1,n+x-1));
78     }
79     return 0;
80 }

 

转载于:https://www.cnblogs.com/ccsu-kid/p/10617555.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101017.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何用ghost备份系统_服务器raid5如何做备份恢复

    如何用ghost备份系统_服务器raid5如何做备份恢复‍电脑安装完系统后,要及时对系统进行备份,这样系统出现什么问题,就可以快速恢复。我们可以用手动Ghost工具对系统进行备份操作。下面和系统城小编一起了解手动Ghost备份系统的具体操作。1、重启电脑,快速按F8,进入DOS界面,运行Ghost.exe;2、选择Local(本机)——Partition(分区)——ToImage(镜像),备份镜像文件到指定文件夹;3、选择备份源的磁盘驱动器(电脑硬盘…

    2022年9月6日
    3
  • Nginx 防攻击安全配置

    Nginx 防攻击安全配置网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置方法)网站被攻击是一个永恒不变的话题,网站攻击的方式也是一个永恒不变的老套路。找几百个电脑(肉鸡),控制这些电脑同时访问你的网站,超过你网站的最大承载能力,然后你就瘫了。方法虽然老土,但却一直都很管用,就像怎么打败美帝国主义,最简单的方法就是13亿中国人都移民去美帝,吃他的、用他的、花他的,直接能让美帝破产,压根不需要用…

    2022年6月16日
    63
  • 盘点|12款服务器监控工具「建议收藏」

    盘点|12款服务器监控工具「建议收藏」服务器监控工具功能相当强大,无论何时何地,我们都可以了解到服务器的功能以及性能。服务器监控工具的使用,可以让我们清楚的知道用户可以打开我们的网站,且确保网速不慢。只有这样做,才能留住宝贵的用户,以免因为系统停运的原因,导致用户丢失。基于此,我为大家收集了12款超实用的服务器监控工具。1、zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。abbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问

    2022年6月12日
    80
  • eclipse 创建java文件_如何使用eclipse创建一个java文件

    eclipse 创建java文件_如何使用eclipse创建一个java文件1:如何使用eclipse创建一个java文件第一步:创建一个java项目file——>new–>javaproject第二步:创建一个package选中项目右键,选择:new–>package注意:规范。所有单词全部小写,顶级域名倒着写。规则,必须符合标识符的规则。作用:用于管理class类(java源文件),一个包中不能有同名的class。第三步:创建一个class选…

    2022年7月19日
    16
  • checkout 多选 全选(亲测有效)

    checkout 多选 全选(亲测有效)

    2021年11月8日
    45
  • Mongo的morphia读取Map<String>>类型数据的问题「建议收藏」

    Mongo的morphia读取Map<String>>类型数据的问题「建议收藏」      最近一直使用morphia,给mongo数据查询带来很多遍历,但是最近项目遇到了一个严重的问题,在从Mongo数据库中查询Map&lt;String, List&lt;Object&gt;&gt;字段时,针对value值为空list时(即[ ]),竟然读到数据的严重问题,具体描述如下: 1.Entity数据结构:      import org.mongodb.morph…

    2022年6月17日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号