【hihoCoder第十六周】RMQ-ST算法

RMQ的大裸题。没什么意思。开始数组开小了,RE了一次。下面放代码。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 vector<int> A;
 5 int dp[1000005][20];
 6
 7 void RMQ_init () {
 8     int n = A.size();
 9     for (int i = 0; i < n; ++ i) {
10         dp[i][0] = A[i];
11     }
12     for (int j = 1; (1 << j) <= n; ++ j) {
13         for (int i = 0; i + (1 << j) - 1 < n; ++ i) {
14             dp[i][j] = min(dp[i][j - 1], dp[i + (1 << (j - 1))][j - 1]);
15         }
16     }
17 }
18
19 int RMQ (int L, int R) {
20     int k = 0;
21     while ((1 << (k + 1)) <= R - L + 1) ++ k;
22     return min(dp[L][k], dp[R - (1 << k) + 1][k]);
23 }
24
25 int main () {
26     int n;
27     while (~scanf ("%d", &n)) {
28         int x, op_n;
29         for (int i = 0 ; i < n; ++ i) {
30             scanf ("%d", &x);
31             A.push_back(x);
32         }
33         /*
34         for (int i = 0; i < A.size() - 1; ++ i) {
35             cout << A[i] << endl;
36         }
37         */
38         RMQ_init ();
39         int a, b;
40         scanf ("%d", &op_n);
41         for (int i = 0; i < op_n; ++ i) {
42             scanf ("%d%d", &a, &b);
43             printf ("%d\n", RMQ(a - 1, b - 1));
44         }
45     }
46     return 0;
47 }
时间: 2024-10-12 07:12:20

【hihoCoder第十六周】RMQ-ST算法的相关文章

46. 蛤蟆的数据结构笔记之四十六普里姆算法

46. 蛤蟆的数据结构笔记之四十六普里姆算法 本篇名言:"手莫伸 ,伸手必被捉.党与人民在监督 ,万目睽睽难逃脱.汝言惧捉手不伸 ,他道不伸能自觉 , 其实想伸不敢伸 ,人民咫尺手自缩.-- 陈毅" 连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小.构造连通网的最小代价生成树,即最小生成树(Minimum Cost Spanning Tree). 找连通图的最

第十六周学习进度表

时间 第十六周 所花时间 10个小时左右 代码量 300行左右 博客量 1篇 了解到的知识点 网页版的显示作业

第十六周进度表

第十六周进度表 所花时间(包括上课) 10 代码量(行) 853 博客量(篇) 1 了解到的知识点 了解了有关Android开发的知识 了解了页面跳转功能的实现 了解了绩效管理和项目总结的知识

每周进度条(第十六周)

第十六周进度条   第十六周 所花时间 3h 代码量(行)  200 博客量(篇)  1 学到的知识 Android之间页面的切换 创建动态表格

第十六周学习进度

第十六周 所花时间 3h 代码量 230 博客量 1 了解到的知识点 jsp javabean的编写数据库连接操作 swing 美化页面 jsp设计表格

学习进度条(十六周)

本周主要是对于团队开发项目的修改完善.   第十六周 所花时间(包括上课) 上课2小时,课后10小时 代码量(行) 300+ 博客量 3 了解到的知识点 服务器修改数据库表结构

第十六周进度条

第十六周 所花时间(包括上课) 21小时(上课2小时,读书3,整理文档10小时,编程5,写博客1) 代码量(行) 900行 博客量(篇) 1篇 了解到的知识点 对word文档的文字进行操作,知道了更多的知识 知道了如何往应用商店上发布软件

第十六周进度

时间段 第十六周 所花时间 32小时 代码量 602行 博客量 0篇 了解到的知识点 android开发中Fragment的基本使用方法 DrawLayout的使用方法

学习进度表_十六周

  第十六周 所花时间    3小时 代码量 200行 博客数 1 了解到的知识点 将之前的所掌握内容整合