嘟嘟嘟

一道RMQ板子题,分别维护最大值和最小值,不解释。

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<cstdlib>
  7. #include<cctype>
  8. #include<stack>
  9. #include<queue>
  10. #include<vector>
  11. using namespace std;
  12. #define enter puts("")
  13. #define space putchar(' ')
  14. #define Mem(a) memset(a, 0, sizeof(a))
  15. typedef long long ll;
  16. typedef double db;
  17. const int INF = 0x3f3f3f3f;
  18. const db eps =1e-;
  19. const int maxn = 5e4 + ;
  20. inline ll read()
  21. {
  22. ll ans = ;
  23. char ch = getchar(), last = ' ';
  24. while(!isdigit(ch)) {last = ch; ch = getchar();}
  25. while(isdigit(ch)) {ans = ans * + ch - ''; ch = getchar();}
  26. if(last == '-') ans = -ans;
  27. return ans;
  28. }
  29. inline void write(ll x)
  30. {
  31. if(x < ) putchar('-'), x = -x;
  32. if(x >= ) write(x / );
  33. putchar(x % + '');
  34. }
  35.  
  36. int n, m, a[maxn];
  37.  
  38. int dp[maxn][][], b[maxn];
  39. void RMQ()
  40. {
  41. for(int i = ; i <= n; ++i) dp[i][][] = dp[i][][] = a[i];
  42. for(int j = ; ( << j) <= n; ++j)
  43. for(int i = ; i + ( << j) - <= n; ++i)
  44. {
  45. dp[i][j][] = max(dp[i][j - ][], dp[i + ( << (j - ))][j - ][]);
  46. dp[i][j][] = min(dp[i][j - ][], dp[i + ( << (j - ))][j - ][]);
  47. }
  48. int x = ;
  49. for(int i = ; i <= n; ++i)
  50. {
  51. b[i] = x;
  52. if(( << (x + )) <= (i + )) x++;
  53. }
  54. }
  55. int query(int L, int R, bool flag)
  56. {
  57. int k = b[R - L + ];
  58. if(flag) return min(dp[L][k][flag], dp[R - ( << k) + ][k][flag]); //应该是R - (1 << k) + 1,不是R - k + 1……
  59. else return max(dp[L][k][flag], dp[R - ( << k) + ][k][flag]);
  60. }
  61.  
  62. int main()
  63. {
  64. n = read(); m = read();
  65. for(int i = ; i <= n; ++i) a[i] = read();
  66. RMQ();
  67. for(int i = ; i <= m; ++i)
  68. {
  69. int L = read(), R = read();
  70. write(query(L, R, ) - query(L, R, )); enter;
  71. }
  72. return ;
  73. }

[Usaco2007 Jan]Balanced Lineup的更多相关文章

  1. BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队

    1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 933  Solved: 56 ...

  2. BZOJ1636: [Usaco2007 Jan]Balanced Lineup

    1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 476  Solved: 345[ ...

  3. BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队( RMQ )

    RMQ.. ------------------------------------------------------------------------------- #include<cs ...

  4. BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队

    1699: [Usaco2007 Jan]Balanced Lineup排队 Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. ...

  5. bzoj 1636: [Usaco2007 Jan]Balanced Lineup -- 线段树

    1636: [Usaco2007 Jan]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 772  Solved: 560线 ...

  6. bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队 分块

    1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MB Description 每天,农夫 John ...

  7. [Usaco2007 Jan]Balanced Lineup排队

    [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 2333 Solved: 1424 Des ...

  8. bzoj1699[Usaco2007 Jan]Balanced Lineup排队*&bzoj1636[Usaco2007 Jan]Balanced Lineup*

    bzoj1699[Usaco2007 Jan]Balanced Lineup排队 bzoj1636[Usaco2007 Jan]Balanced Lineup 题意: 询问区间最大值减区间最小值的差. ...

  9. ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...

  10. 【BZOJ】1636: [Usaco2007 Jan]Balanced Lineup(rmq+树状数组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1636 (我是不会说我看不懂题的) 裸的rmq.. #include <cstdio> # ...

随机推荐

  1. MVC的使用

    演示产品源码下载地址:http://www.jinhusns.com

  2. SQL - 先安装SQL2008 R2后安装AD导致无法正常登陆数据库(无法启动MSSQLSERVER)

    分析原因:安装AD后,系统改为使用域用户登陆,原先安装SQL时设置的“本地用户”信息已经修改,当前(域)用户没有权限访问MSSQLSERVER实例文件夹或整个SQL文件夹. 解决方法: 1.打开“服务 ...

  3. 如何通过DataGridView 实现单元格合并和二维表头

    先看下实现出来的效果(这里随便写了几组数据,用来测试) 先初始一个DataGridView 设置哪几列 DataGridView 里男女这两列的 AutoSizeMode 可以设置Fill. publ ...

  4. 【CentOS】设置服务开机自动启动

    CentOS安装好apache.mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了. 例如,要 ...

  5. Nett的Http表头赋值

    DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseSta ...

  6. MySQL锁详解!(转载)

    博客来源于https://baijiahao.baidu.com/s?id=1610581108528334819&wfr=spider&for=pc 一.概述 数据库锁定机制简单来说 ...

  7. NIO学习笔记五:Buffer 的使用

    Java NIO中的Buffer用于和NIO通道进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffe ...

  8. 背景平铺(兼容IE8)

    标准浏览器通过background-size属性设置;IE8以下通过滤镜实现. 代码如下: /* IE8 */ filter: progid:DXImageTransform.Microsoft.Al ...

  9. enum 的使用方法(java)

    作者QQ:1095737364    QQ群:123300273     欢迎加入! enum很像特殊的class,实际上enum声明定义的类型就是一个类.而这些类都是类库中Enum类的子类(java ...

  10. 【代码笔记】iOS-在Block中修改外部变量值的

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...