bzoj1699
st表
我还不会st表
f[i][j]表示[i,i+2^j)区间的最值
构造就像lca一样f[i][j]=f[i][j-1] f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]) 表示[i+2^(j-1)) [i+2^(j-1), i+2^j)
然后查询找出一个2的幂,从头和尾覆盖查询区间,max(mx[l][x],mx[r-2^x+1][x]) 这样覆盖了整个区间
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, q;
int mx[N][], mn[N][], a[N];
void query(int l, int r)
{
int x = log(r - l + ) / log();
int x1 = max(mx[l][x], mx[r - ( << x) + ][x]);
int x2 = min(mn[l][x], mn[r - ( << x) + ][x]);
printf("%d\n", x1 - x2);
}
int main()
{
scanf("%d%d", &n, &q);
for(int i = ; i <= n; ++i)
{
int x;
scanf("%d", &a[i]);
mx[i][] = a[i];
mn[i][] = a[i];
}
for(int i = ; i <= ; ++i)
for(int j = n; j; --j)
{
mn[j][i] = mn[j][i - ];
mx[j][i] = mx[j][i - ];
if(j + ( << (i - )) <= n)
{
mx[j][i] = max(mx[j][i], mx[j + ( << (i - ))][i - ]);
mn[j][i] = min(mn[j][i], mn[j + ( << (i - ))][i - ]);
}
}
while(q--)
{
int l, r;
scanf("%d%d", &l, &r);
query(l, r);
}
return ;
}
bzoj1699的更多相关文章
- bzoj1699[Usaco2007 Jan]Balanced Lineup排队*&bzoj1636[Usaco2007 Jan]Balanced Lineup*
bzoj1699[Usaco2007 Jan]Balanced Lineup排队 bzoj1636[Usaco2007 Jan]Balanced Lineup 题意: 询问区间最大值减区间最小值的差. ...
- BZOJ-1699 Balanced Lineup 线段树区间最大差值
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 41548 Accepted: 19514 Cas ...
- BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队
1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 933 Solved: 56 ...
- BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队 - 线段树
description 查询区间最大和最小 题解 线段树 愉悦身心啊 代码 #include<cstring> #include<cstdio> #include<alg ...
- 【数据结构】bzoj1636/bzoj1699排队
Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置 ...
- BZOJ第7页养成计划
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1600 BZOJ1601 BZOJ1602 BZOJ1603 BZOJ1604 BZOJ1605 ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- bzoj Usaco补完计划(优先级 Gold>Silver>资格赛)
听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ---------------------------- ...
- 数据结构:ST表
BZOJ1699 在经历了树套树和主席树的洗礼之后,所有的数据结构都显得格外地亲切,和自然.. ST算法能够实现O(nlogn)的预处理的情况下完成O(1)的区间最值查询 虽然这要求区间是静态的,也就 ...
随机推荐
- html5——3D案例(立体汉字,旋转导航)
1.立体汉字:旋转点left,attr(data-cont)可获取自定义属性值,skewY(倾斜转换)参考地址 2.旋转导航:先移动后旋转,li标签需要延迟执行旋转 注意::hover事件触发自己的: ...
- git使用原理
如果需要新建仓库: mkdir new_artcle//artcle为文件名 cd new_artcle//进入该目录 git init //初始化工作空间 git add 文件名(article) ...
- Python语言之模块
模块基本上就是一个包含了所有你定义的函数和变量的文件.它用处在于使你你能在别的程序中重用它提供的功能和服务. 1.模块的使用方法 模块的文件名必须以.py作为扩展名. 当我们需要使用某个模块时,我们需 ...
- hibernate注解之@Onetomany、@Manytoone、@JoinColumn
@Onetomany用于实体类与数据库表映射中少的一方,请看下面的例子. 假设一个用户只有一种角色,用户和角色是onetomany的关系 用户实体 @Entity @Table(name=" ...
- codeforces_738D
D. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- yum进程被占用
使用yum安装软件的时候出现,/var/run/yum.pid 已被锁定,PID 为 6503 的另一个程序正在运行的问题 [root@localhost mysql]# yum install gc ...
- .net 程序集加载,版本不匹配的解决方法
经常有些时候,A.dll引用的是Microsoft.EntityFrameworkCore.dll version=1.0.0.0 publicKeyToken="adb9793829dda ...
- 网络爬虫 robots协议 robots.txt
网络爬虫 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上 ...
- Android之手机振动和振铃
一.振动的实现1.使用振动所需的权限 <uses-permission android:name="android.permission.VIBRATE" />2.相关 ...
- is_NaN的使用
原生js中使用判断某个值是否是数值,有且只有一个方法就是is_NaN. 原理:这个函数使用了Number() 去转换需要判断的值.Number() 去转换值,如果有任意非数值字符存在则就不是一个数值. ...