hiho1460 rmq模板题
好久没做rmq的题了,今天写了一遍,感觉打表有点像区间dp
/*
给定长为n的字符串,要求在字符串中选择k个字符,
选择的子系列字典序最小
因为选择k个字符,那么就是去掉n-k个字符
那么[1,n-k+1]位中必定选择一个字符
设这个字符在t1位
然后[t1,n-k+2]位中必定选择一个字符
设这个字符在t2位
以此类推
那么问题就是求区间最小字符的下标
rmq即可
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
int dp[maxn][],k,n;
char a[maxn];
void RMQ(){
for(int i=;i<=n;i++)dp[i][]=i;
for(int j=;(<<j)<=n;j++)
for(int i=;i+(<<j)-<=n;i++)
if( a[dp[i][j-]] <= a[dp[i+(<<(j-))][j-]] )
dp[i][j]=dp[i][j-];
else dp[i][j]=dp[i+(<<(j-))][j-];
}
int query(int l,int r){
int k=log(r-l+1.0)/log(2.0);
if(a[dp[l][k]] <= a[dp[r-(<<k)+][k]])
return dp[l][k];
return dp[r-(<<k)+][k];
}
int main(){
cin>>k>>a+;
n=strlen(a+);
int m=n-k+;
RMQ();
int t=;
vector<char>v;
v.clear();
for(int i=m;i<=n;i++){
t=query(t,i);
v.push_back(a[t]);
t++;
}
for(int i=;i<v.size();i++)
cout<<v[i];
}
hiho1460 rmq模板题的更多相关文章
- Zeratul的完美区间(线段树||RMQ模板题)
原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) ...
- POJ 3264:Balanced Lineup(RMQ模板题)
http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. #i ...
- RMQ 模板题 poj 3264
题目:点这里 题意:给一个长度n的数列,然后又Q个询问,问L 到R 中最大值与最小值的差. 分析:RMQ 的模板题. 代码: #include<stdio.h> #include& ...
- hdu 2888 二维RMQ模板题
Check Corners Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- [USACO07JAN]平衡的阵容Balanced Lineup RMQ模板题
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 50000 + ...
- poj2019 二维RMQ模板题
和hdu2888基本上一样的,也是求一个矩阵内的极值 #include<iostream> #include<cstring> #include<cstdio> # ...
- POJ 3264 Balanced Lineup(模板题)【RMQ】
<题目链接> 题目大意: 给定一段序列,进行q次询问,输出每次询问区间的最大值与最小值之差. 解题分析: RMQ模板题,用ST表求解,ST表用了倍增的原理. #include <cs ...
- SPOJ RPLN (模板题)(ST算法)【RMQ】
<题目链接> 题目大意:给你一段序列,进行q次区间查询,每次都输出询问区间内的最小值. 解题分析: RMQ模板题,下面用在线算法——ST算法求解.不懂ST算法的可以看这篇博客 >& ...
- Poj 3264 Balanced Lineup RMQ模板
题目链接: Poj 3264 Balanced Lineup 题目描述: 给出一个n个数的序列,有q个查询,每次查询区间[l, r]内的最大值与最小值的绝对值. 解题思路: 很模板的RMQ模板题,在这 ...
随机推荐
- ES学习
官方参考手册 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html https://www.elastic.co ...
- R大
知乎链接 https://www.zhihu.com/collection/114506870
- Can not deserialize instance of xxx out of START_ARRAY token
Json 反序列化异常 Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableEx ...
- 目标检测:YOLO(v1 to v3)——学习笔记
前段时间看了YOLO的论文,打算用YOLO模型做一个迁移学习,看看能不能用于项目中去.但在实践过程中感觉到对于YOLO的一些细节和技巧还是没有很好的理解,现学习其他人的博客总结(所有参考连接都附于最后 ...
- Microsoft SQL - 学习总目录
Microsoft SQL - 数据库管理系统 Microsoft SQL - 数据类型 Microsoft SQL - 查询与更新 Microsoft SQL - 操作语句 Microsoft SQ ...
- 必须要学会webpack打包,并到特别精通的程度
必须要学会webpack打包,并到特别精通的程度
- Intel Xeon E5-2620 v4参数
基本参数 CPU系列 Xeon E5 v4系列 制作工艺 14纳米 核心代号 Broadwell 性能参数 核心数量 八核心 线程数量 十六线程 CPU主频 2.1GHz 动态加速频率 3GHz L3 ...
- go byte 和 string 类型之间转换
string 不能直接和byte数组转换 string可以和byte的切片转换 1,string 转为[]byte var str string = "test" var data ...
- Mongoose简介
Mongoose 官网地址:http://mongoosejs.com/ ,Mongoose 为node.js提供了优雅的,针对mongodb的ODM(Object Document Mappin ...
- Log4PHP日志库使用
库下载地址: http://logging.apache.org/log4php/download.html 当前测试使用的版本为2.3.0 1.解压缩下载的压缩文件apache-log4php-2. ...