hdu3183 RMQ

HDU3183(RMQ+鸽巢原理) 题目的意思是对于一个n位数,删除m个位后,得到的最小数是什么,比如12345 2,删除两个位,得到最小的就是123.实际上这题目解法很多,好像有贪心,线段树,RMQ等,因为我最近在学习RMQ,所以就用RMQ了。 这题目用了一个鸽巢原理,得到的m-n位数的第一位,必然出现在1~m-n+1,这个由鸽巢原理就十分明显了(如果1~n-(m-n)+1都没有的话,剩下的m-n-1个位是不可能凑出m-n个位的 阅读详情

A Magic Lamp

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2742    Accepted Submission(s): 1071


Problem Description
Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her dreams. 
The question is: give you an integer, you are allowed to delete exactly m digits. The left digits will form a new integer. You should make it minimum.
You are not allowed to change the order of the digits. Now can you help Kiki to realize her dream?
 

Input
There are several test cases.
Each test case will contain an integer you are given (which may at most contains 1000 digits.) and the integer m (if the integer contains n digits, m will not bigger then n). The given integer will not contain leading zero.
 

Output
For each case, output the minimum result you can get in one line.
If the result contains leading zero, ignore it. 
 

Sample Input
178543 4 1000001 1 100001 2 12345 2 54321 2
 

Sample Output
13 1 0 123 321

/*
hdu3183	RMQ
给你一串数字,求出删除m个数字后的最小值,用其他方法应该很好做的
开始想的是将里面的最大值选出来,但发现并不怎么靠谱,后来参考别人思路
发现可以通过RMQ求出最小值的位置,假设要在n个数中找出m个,那么第一个数一定在
[1,n-m],找出这个数的位置x,那么第二个数则在[x+1,n-m+1]
hhh-2016-01-30 03:13:55	
*/

#include <functional>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <Map>
using namespace std;
typedef long long ll;
typedef long double ld;

using namespace std;

const int maxn = 1005;
char str[maxn];
char ans[maxn];
int dp[maxn][20];
int mm[maxn];


int Min(int i,int j)
{
    return str[i] <= str[j] ? i:j;
}

void iniRMQ(int n,char c[])
{
    for(int i = 0; i < n; i++)
    {
        dp[i][0] = i;
    }
    for(int j = 1; j <= mm[n]; j++)
    {
        for(int i = 0; i+(1<<j)-1 < n; i++)
            dp[i][j] = Min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
    }
}

int RMQ(int x,int y)
{
    int k = mm[y-x+1];
    return Min(dp[x][k],dp[y-(1<<k)+1][k]);
}


int main()
{
    int m;
    mm[0] = -1;
    for(int i = 1;i <= 1000;i++)
        mm[i] = ((i&(i-1)) == 0)? mm[i-1]+1:mm[i-1];
    while(scanf("%s%d",str,&m) != EOF)
    {
        int n = strlen(str);
        iniRMQ(n,str);
        int now,tot;
        now = tot = 0;
        m = n-m;
        while(m--)
        {
             now = RMQ(now,n-m-1);
            ans[tot++] = str[now++];
        }
        for(now = 0; now < tot; now++)
            if(ans[now] != '0')
                break;

        if(now == tot)
            printf("0\n");
        else
        {
            while(now < tot)
            {
                printf("%c",ans[now]);
                now ++;
            }
            printf("\n");
        }
    }
    return 0;
}




loadStop的原因导致的SSUSP Total内存值是可用来调度的可用内存,当前可用内存为 0M。 loadSched和loadStop的阈值是根据 Total 内存和节点内存来做限制的。 loadStop 50G,现在有大量作业SSUSP,说明之前某个时间点该节点内存可能有低于50G的时候,导致作业SSUSP,具体是否是这个原因引起的需要用 bjobs -l JobID 看下作业的详细信息。 如果是loadStop的原因导致的 SSUSP,根据loadStop设置的阈值,Total 值高于loadStop值后,将逐步恢复挂起的作业 阅读详情

相关推荐

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 766

ST表入门 HDU3183 +鸽巢原理

入门ST表算法 解决问题:RMQ 教程:https://www.cnblogs.com/qq965921539/p/9608980.html 关键理解之处:查询之时的核心代码: int search(int l,int r) { int k=(int)(log((double)(r-l+1))/log(2.0));//比如说log(4)=2,log(5)=2,log(6)=2,log(...

weixin_43768774的博客 331

从代码到实践:手把手教你用EmbodiedOcc++实现高效3D占用预测(含ScanNet配置)

本文提供了EmbodiedOcc++框架在ScanNet数据集上实现高效3D占用预测的完整实践指南。从环境搭建、数据预处理入手,详细解析了其核心创新点——几何引导优化(GRM)与语义感知不确定性采样(SUS)的代码实现与配置,并分享了训练、评估及调参的实战技巧,帮助开发者快速掌握这一先进的3D感知技术。

terraform7cloud的博客 588

HDU3183- 贪心

A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3728    Accepted Submission(s): 1515 Problem Description Kiki likes tr

Code-Dreamer的博客 573

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

【无人机设计与控制】基于PID控制的四旋翼无人机系统Matlab仿真

本文设计并仿真了基于PID控制的四旋翼无人机系统。首先,建立了四旋翼无人机的数学模型,涵盖了无人机的动力学和控制系统。通过PID控制器对四旋翼的姿态和位置进行控制,以实现其稳定飞行。使用MATLAB/Simulink对该系统进行仿真,验证了PID控制算法在四旋翼控制中的有效性。仿真结果表明,PID控制能够较好地调节四旋翼的飞行姿态,并有效抑制外部干扰,使得无人机能够保持平稳飞行。

2401_84610415的博客 1804

hdu3183 A Magic Lamp (RMQ+抽屉原理)

Problem Description Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her dr...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 247

Python 爬虫实战:就业市场趋势数据抓取与行业洞察

在当今竞争激烈的就业市场中,了解行业趋势和就业形势对于求职者、学生以及人力资源专业人士来说至关重要。通过获取和分析就业市场数据,我们可以深入了解不同行业的招聘需求、薪资水平、技能要求等关键信息,从而为职业规划和人才发展提供有力支持。

yansideyucsdn的博客 1406

HDU3183(RMQ问题,ST算法)

题目:A Magic Lamp   题意: 对于一个序列A[1...N],一共N个数,除去M个数使剩下的数组成的整数最小。 也就是说在A[1...N]中顺次选取N-M个数,使值最小。 本题很有技巧性,一开始我总是想不明白,后来在纸上画了一下,大概明白了是怎么回事。 它主要是基于以下事实: 对于序列A[1...N],选取N-M个数,使组成的值最小,而且顺序不能交换,既然

ACdreamer 4240

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-DIO之高低电平输出-点亮LED灯(基于MCAL)

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-点亮LED灯(基于MCAL)

「汽车电子助手」的博客 1937

2026年寒武纪数字IC笔试试卷带答案

本文摘要: 该数字IC设计测试卷包含单选题(30分)、波形分析题(15分)、多选题(30分)三类客观题,覆盖时序约束、半导体工艺、状态机、数制转换、同步复位等核心知识点。重点考察:1)跨时钟域处理(如异步FIFO、格雷码应用);2)时序分析(建立/保持时间、时钟约束指令);3)低功耗设计技术(时钟门控、DVFS);4)寒武纪MLU架构特性(张量核、混合精度计算)。解析强调工程实践要点,如异步复位需同步释放、建立时间违例与频率的关联性等。试题难度梯度明显,既包含基础概念辨析(如Moore/Mealy状态机),

Open 223

hdu 3183 A Magic Lamp RMQ ST 坐标最小值

hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑出来m个数使得剩余的数字最小,串的序列不能改变 思路: 将问题转化为求在n个数中挑选n-m个数,使之最小。假设最极端的情况,所有最大的数字都在左侧,占据了m个位置,那么我们需要挑选的最...

ddqb3235的博客 192

YOLOv5源码逐行超详细注释与解读(2)——推理部分detect.py

全网最详细的YOLOv5之推理部分detect.py源码逐行注释,近四万字的超详细讲解!小白入门必看!

路人贾的博客 5万+

HDU 3183 A Magic Lamp(贪心 or RMQ)

HDU 3183 A Magic Lamp(贪心+RMQ) 分析: 1.       首先考虑对于n个数字组成的数,只删除1位的情况。 比如176832,删除一位使得剩下的数值最小。结果是删除7而不是删除8所以可知并不总是删除最大的那个数字。 一种可行的贪心策略是:对于n位数构成的数删除m位,每次总是删除这样的a[i]:它是第一个a[i]>a[i+1]的数,如果不存在则就删除a[n]。详见

code 1394

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RMQ hdu 3183 A Magic Lamp

RMQ hdu 3183 A Magic Lamp //hdu 3183 A Magic Lamp //RMQ //用RMQ求剩下的n-m个数,第一个数肯定在第一个数和第m+1 个数之间的最小的那个数, //包括第一和m+1,第二个数肯定在上一次求的数到第m+2 个数之间,依次类推 //注意:预处理log时,记得最大下标是所给数的长度,不是2的几次方, //下标就是多少。求最小...

weixin_30394251的博客 109

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU - 3183 A Magic Lamp (RMQ + 贪心)

HDU - 3183 A Magic Lamp 题目 给一个最多 1000 位的整数,去掉 n 个数位,使剩下的数字尽可能小。 分析 去掉 n 个数位之后剩下的数位是固定的,之后对于高位贪心的尽可能取最小值即可。可以用RMQ预先处理最小值的下标。不过如果值相同,优先级左边的要比右边的高。剩下的数位有可能比较大,按字符串输出即可。 #include <bits/stdc++.h> #de...

Stormjing的博客 261

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu3183A Magic Lamp【RMQ】

今天开始为期2天的RMQ,争取能做上6-7题,本来也不是多大的知识点。 其实第一场网络赛的之前就知道这个算法,dp的logn求静态区间最大最小值的巧妙算法,只不过这个题改成了要你算下标了。还是没有理解好ST算法的本质,导致TLE了两次后才幡然悔悟借鉴苟神博客才A掉。自己最开始还自以为是的觉得每次查询出来当前的最值然后改成0就可以了,那还和线段树有什么两样??居然没有想到,第几次找的最值和数组的下

MissZhou要努力 519

HDU 3183.A Magic Lamp-区间找最小值-RMQ(ST)

A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7170Accepted Submission(s): 2866 Problem Description Kiki likes traveling. O...

weixin_30371875的博客 102

【HDU 3183】下标RMQ

1.题目链接。题目大意:给定一个n位的十进制数,删去m位,让剩下的值最小。 2.这个题目显然贪心,开始想的是从前到后查找逆序删除,因为从高位删除是最优(此处没有证明。。。。),然后删除每一个元素之后,就继续对这个数组进行相同的操作,循环m次即可。涉及到元素的删除,我们可以下一个双向的链表来实现这个操作。但是仔细的想一下,因为删除的过程中,我们需要保持余下的元素相对位置不变,其实就是说挑选n-m个...

YG爱木木 327

hdu3183 rmq求区间最值的下标

两个月前做的题,以后可以看看,是rmq关于求区间最值的下标 /* hdu3183 终点 给一个整数,可以删除m位,留下的数字形成一个新的整数 rmq 取n-m个数,使形成的数最小 */ #include<iostream> #include<cstring> #include<cmath> #include<cstdio&g...

weixin_30693683的博客 140

RMQ hdu3183 RMQ模板

基础RMQ模板 dp[i][j]代表从i开始并且包括i的2^j个数字中最小(最大)的值。 构建的过程可以用动态规划完成 dp[i][j]=min(dp[i][j-1],dp[i+(1<<j-1)][j-1]) void rmq_init() { for(int i=1;i<=N;i++) dp[i][0]=arr[i]; for(int j=1;(1<&lt...

haiku的博客 179

HDU3183 A Magic Lamp —— 贪心(单调队列优化)/ RMQ / 线段树

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题解: 方法一:贪心。 在草稿纸上试多几次可以知道,删除数字中从左到右最后一位递增(可以等于)的数字,可以得到最小值,在这个基础下,又继续删除最后一位递增的数字,得到的依然是最小值。这就表明当前这步的贪心不仅是当前最优,而且对于下一步贪心来说也是最优的。所以每次删除最后递增项就可以

A man can be destroyed, but not defeated. 715

HDU 3183 RMQ

<br />题意:<br />  在一个n位数中删除m位使其值最小。<br />解法:<br />  题目要求与从n位数中取出n-m位使其最小等价,然后就很简单了,每次RMQ出(l+1,n-(n-m-i)-1)最小值输出即可,l为前一次最小值位置,i为当前在取第i位,n-(n-m-i)-1是为了保证取出这个最小值后加上后面的位数保证能构成n-m位。<br />代码:<br />  #include<iostream> #include<string> using namespace std; cons

SwordHoly __传说中的圣剑,攻击力加250,ORZ!! 1514

HDU 3183 RMQ/贪心

题意: 给出一个不超过1000位的字符串,求删去m个数字以后可以形成的最小的数是多少。 题解: 贪心: 首先考虑对于n个数字组成的数,只删除1位的情况。 比如176832,删除一位使得剩下的数值最小。结果是删除7而不是删除8 所以可知并不总是删除最大的那个数字。 一种可行的贪心策略是:对于n位数构成的...

又菜又爱玩 265
上一篇: hdu 2888 二维RMQ模板题
下一篇: hdu 4123 树的最长路+RMQ
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值