博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3183 A Magic Lamp 【RMQ】
阅读量:5164 次
发布时间:2019-06-13

本文共 785 字,大约阅读时间需要 2 分钟。

<>

<转载于   >

题目大意:

给出一个长度不超过1000位的数,求删去m位数字以后形成的最小的数字是多少。

解题分析:

分析:我们可以把题目转化为这样一个模型:从A[1]、A[2]、……、A[n] n个数中选出n-m个数,使得组成的数最小。

一、使用RMQ,设原数字长为n,那么除去m个数字后还剩n-m个数字。    下面的(一)、(二)用到了抽屉原理
(1)因为有n-m个数字,那么在0到m-1位置中最小的那个数字必是结果中的第一个数字,记录其位置为pos
(2)然后从这个位置的下个位置pos+1开始到m+2位置的数字中最小的那个数字必定是结果中第二个数字,以此类推下去向后找。
(3)为了保证数字最小,所以要保证高位最小,还要保证数字长度满足条件。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int M = 1e3+10; 8 char s[M]; 9 char ans[M];10 int st[M][20],m;11 int Min(int a,int b){ //根据它们在字符串中的值,返回值更小的元素的下标 12 return s[a]<=s[b]?a:b;13 }14 void RMQ_init(int len){ //用ST表预处理[i,i+2^J-1]这个区间内最小值所在的坐标 15 for(int i=0;i

 

 

2018-10-20

转载于:https://www.cnblogs.com/00isok/p/9822159.html

你可能感兴趣的文章
计算机网络资料 - 转
查看>>
string中substr,find函数使用
查看>>
前台后台数据的传递
查看>>
hive基本操作与应用
查看>>
Net基础篇_学习笔记_第十天_方法_方法的练习
查看>>
网站与域名知识扫盲
查看>>
angular自定义指令
查看>>
STM32 SPI 通信
查看>>
运维自动化模式比较
查看>>
很好用的JAVA JSON工具:FastJSON
查看>>
图解aclocal、autoconf、automake、autoheader、configure
查看>>
主流CTR预估模型的演化及对比
查看>>
Java NIO使用及原理分析(三)
查看>>
如何为IOS6生成Pass(passbook的使用与开发)
查看>>
黑马程序员_ArrayList、Hashtable、List、Dictionary的区别与应用
查看>>
printf重定向问题
查看>>
1. Python快速入门
查看>>
re正则模块
查看>>
iOS UIButton按钮 UILabel 文本
查看>>
【BZOJ 3681】Arietta
查看>>