HDU_3183_RMQ
2024-09-06 17:02:32
http://acm.hdu.edu.cn/submit.php?pid=3183
初探rmq,这道题看了题解还是写了好久。原因是rmq处理字符串时没有自己写min函数,导致把返回的字符当成下标处理了。
这题也可以直接贪心写,思路和rmq一样,查找的方法效率低一些。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std; char a[],ans[];
int dp[][]; int Min(int x,int y)
{
return a[x] <= a[y] ? x : y;
} void rmq_init(int len)
{
for(int i = ;i < len;i++) dp[i][] = i;
for(int j = ;(<<j) < len;j++)
{
for(int i = ;i+(<<j)- < len;i++)
{
dp[i][j] = Min(dp[i][j-],dp[i+(<<(j-))][j-]);
}
}
} int rmq_query(int l,int r)
{
int k = (int)(log((double)(r-l+))/log(2.0));
return Min(dp[l][k],dp[r-(<<k)+][k]);
} int main()
{
int n,i;
while(~scanf("%s%d",a,&n))
{
int len = strlen(a);
rmq_init(len);
n = len-n;
int pos = ,num = ;
while(n)
{
pos = rmq_query(pos,len-n);
ans[num++] = a[pos++];
n--;
}
for(i = ;i < num && ans[i] == '';i++);
if(i == num) printf("0\n");
else
{
for(;i < num;i++) printf("%c",ans[i]);
printf("\n");
}
}
return ;
}
最新文章
- ARMGNU伪指令
- gulp教程之gulp-htmlmin
- android之广播(二)
- STM32 ucosii 串口接收数据 遇到的问题及解决思路
- PHP ServerPush
- PHP遍历文件夹下的文件和获取到input name的值
- FatMouse&#39;s Speed(HDU LIS)
- nginx做yum源
- json模块及其API
- Go基础系列:struct和嵌套struct
- html 背景
- django基础之二
- Centos7 教程收集ing
- Oracle居然把Java EE的未来押在Rest API上了
- Last_SQL_Errno: 1062
- java中的继承(is a )和组合(has a)
- *.hbm.xml作用是什么
- DEDE 5.7中各函数所在的文件和位置
- Android线程与线程池
- JavaScript基础深入之----参数传递的分析与总结