hdu 3183 A Magic Lamp(RMQ)
题目大意:给定一个字符串,然后最多删除K个。使得剩下的组成的数值最小。
解题思路:问题等价与取N-M个数。每次取的时候保证后面能取的个数足够,而且取的数最小,查询最小的操作用RMQ优化。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10005;
int N, M, d[maxn][20];
char s[maxn];
void rmq_init() {
N = strlen(s);
for (int i = 0; i < N; i++)
d[i][0] = s[i];
for (int k = 1; (1<<k) <= N; k++) {
for (int i = 0; i < N; i++)
d[i][k] = min(d[i][k-1], d[i+(1<<(k-1))][k-1]);
}
}
int rmq_query(int l, int r) {
int k = 0;
while ((1<<(k+1)) <= r - l + 1) k++;
return min(d[l][k], d[r-(1<<k)+1][k]);
}
int main () {
while (scanf("%s%d", s, &M) == 2) {
rmq_init();
M = N - M;
int mv = 0;
bool flag = true;
for (int i = M; i; i--) {
int c = rmq_query(mv, N - i);
while (mv < N && s[mv] != c) mv++;
mv++;
if (c == '0' && flag)
continue;
flag = false;
printf("%c", c);
}
if (flag)
printf("0");
printf("\n");
}
return 0;
}
hdu 3183 A Magic Lamp(RMQ)的更多相关文章
- hdu 3183 A Magic Lamp RMQ ST 坐标最小值
hdu 3183 A Magic Lamp RMQ ST 坐标最小值 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 题目大意: 从给定的串中挑 ...
- HDU 3183 - A Magic Lamp - [RMQ][ST算法]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 Problem DescriptionKiki likes traveling. One day ...
- hdu 3183 A Magic Lamp rmq或者暴力
A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Pro ...
- HDU 3183 A Magic Lamp(RMQ问题, ST算法)
原题目 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3183 A Magic Lamp(RMQ)
A Magic Lamp Time Limi ...
- HDU 3183 A Magic Lamp(二维RMQ)
第一种做法是贪心做法,只要前面的数比后面的大就把他删掉,这种做法是正确的,也比较好理解,这里就不说了,我比较想说一下ST算法,RMQ的应用 主要是返回数组的下标,RMQ要改成<=(这里是个坑点, ...
- hdu 3183 A Magic Lamp 【RMQ】
<题目链接> <转载于 >>> > 题目大意: 给出一个长度不超过1000位的数,求删去m位数字以后形成的最小的数字是多少. 解题分析: 分析:我们可以把题 ...
- HDU 3183 A Magic Lamp
直接模拟 如果后一位比前一位小,那就一直 向前 pop()掉 维护他单调递增: #include<iostream> #include<cstring> #include& ...
- hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)
1.题目大意是,给你一个1000位的数,要你删掉m个为,求结果最小数. 思路:在n个位里面删除m个位.也就是找出n-m个位组成最小数 所以在区间 [0, m]里面找最小的数.相应的下标标号i 接着找区 ...
随机推荐
- [jobdu]栈的压入、弹出序列
用一个栈辅助,模拟过程+判断就可以了. #include <iostream> #include <memory.h> #include <stack> #defi ...
- S3C2410 实验三——跑马灯实验
http://www.evernote.com/shard/s307/sh/f2a748e7-34c4-4ce6-acac-82a756cc9e82/ad5813188d655e504857970db ...
- RESTFul API 一些文章
http://www.ibm.com/developerworks/cn/web/1103_chenyan_restapi/index.html
- Android开发之ADT中无Annotation Processin的解决办法
使用ButterKnife的时候,进入ADT中设置的时候发现在Java Compiler展开后无Annotation Processin 解决办法: 安装插件:Juno - http://downlo ...
- HTML5标签一览
HTML5标签一览,点击下载 访问密码:1907
- PHP 'ext/gd/gd.c'信息泄漏漏洞
漏洞版本: PHP 5.5.x 漏洞描述: CVE ID:CVE-2014-2020 PHP是一种HTML内嵌式的语言. PHP 'ext/gd/gd.c'没有检查数据类型,允许远程攻击者使用字符串或 ...
- memcached SASL验证状态安全绕过漏洞
漏洞版本: memcached 1.x 漏洞描述: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. Memcached在处理链接的SASL验证状态时存在错 ...
- 深入理解OAuth2.0
1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...
- HDU 2122
思路:prime,考虑重边!!! #include<stdio.h> #include<string.h> int map[1001][1001],dist[1001]; in ...
- [转]"由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断"的解决方案
先使用如下命令登录到服务器: mstsc /v:{服务器IP} /admin 然后再使用下列方法之一即可. 方法一: 1.单击“开始→运行”,输入“gpedit.msc”打开组策略编辑器窗口,依次定位 ...