题目描述

题目描述

给出一个N位数字串,删除任意K位,使剩下的数最大.。

输入

第1行:2个整数N和K(1<=K<=N<=500000)

第2行:N个数字(可能为0)

输出

第1行:1个可行到的最大的数

样例输入

10 4

4177252841

样例输出

775841

题解

刚看到题目时感觉是一道水题…然后迅速交上去T掉了…

仔细看看数据范围,发现常规做法已经达到了O(kn2)" role="presentation" style="position: relative;">O(kn2)O(kn2)的复杂度了,显然是会超时的。

这时候就需要数据结构的优化了~

我们知道之前要删去一个数的时候要先删去一个数,再将前面的数一个一个往前移。有没有方法使它不需要移动呢。显然,我们可以用栈这个数据结构啦~

最后只需要从前往后加入栈内,遇到一个数与前面的数不保持递增状态时就将栈内的元素删去即可。

实现

#include<algorithm>
#include<iostream>
#include<cstring>
#include<climits>
#include<cstdio>
using namespace std;
char b[500005],a[500005];//数组模拟栈
int n,k,task=1,t1;
int main()
{
    scanf("%d%d",&n,&k);
    scanf("%s",a);
    b[1]=a[0];
    int kp=1;
    while(kp<n)
    {
        while(task>0&&a[kp]>b[task]&&t1<k)task--,t1++;
        b[++task]=a[kp++];
    }
    for(int i=1;i<=n-k;i++)printf("%c",b[i]);
}

[COCI11-12 #4]删数游戏(贪心+数据结构)的更多相关文章

  1. P1106删数游戏

    这道题曾经在CQOJ上考过,是第二次做了. 这是一道使用字符串的贪心题.首先要根据机组例子来确定:删除递增序列的最后一位.即循环找到那一位后,把后面的数往前压.所以我在艰难处理完双重循环后(这个处理不 ...

  2. 洛谷P2426 删数 [2017年4月计划 动态规划12]

    P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处 ...

  3. codevs4096 删数问题

    题目描述 Description 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N 和S,寻找一种方案使得剩下的数字组成的新数最小. 输入 ...

  4. 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)

    1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...

  5. poj 3710 Christmas Game(树上的删边游戏)

    Christmas Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1967   Accepted: 613 Des ...

  6. P1005 矩阵取数游戏 区间dp 高精度

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j​均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...

  7. ACM 删数问题 SDUT 2072

    http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html 删数问题 Time Limit ...

  8. 删数问题(NOI94)

    删数问题(NOI94) 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小.输出新的正整数.(N不超 ...

  9. 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集

    [BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...

随机推荐

  1. centos官网下载地址

    CentOS 7官方下载地址:https://www.centos.org/download/ 源自博友的博客:https://blog.csdn.net/yf9595/article/details ...

  2. 03-JavaScript

    上一次内容进行复习: CSS: 层叠样式表 主要作用: 美化页面, 将美化和HTML进行分离,提高代码复用性 选择器: ​    元素选择器: 元素的名称{} ​    类选择器:  . 开头 ​   ...

  3. Java 整数型的进制间的互相转换

    /** * 整数型, 进制间的互相转换 */ public class IntConversion { public static void main(String[] args) { int num ...

  4. php的Memcached模块扩展

    Memcached模块介绍       Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态. ...

  5. 全排列筛选(java)

    蓝桥杯-全排列筛选(java) 蓝桥杯每年必考全排列筛选,一般为填空题: 可以使用for循环暴力破解,但是代码相对较长,也比较乱,不建议使用: 这里使用递归来解决,代码量相对较少,也很好理解: 如下为 ...

  6. SyntaxError: invalid character in identifier(Python)

    在写博客时直接将博客上的代码复制运行后发现错误SyntaxError: invalid character in identifier,我以为是l(小L)写成了1,改了还是不行. 上网查了下,发现原来 ...

  7. F#周报2019年第13期

    新闻 Visual Studio 2019发布会 Json2FSharp--在线类型生成器 cs2fs-online--从C#到F#的移植器 AWS Lambda layer上的.NET Core A ...

  8. Multi-Projector Based Display Code ---- ModelViewer

    Overview Model viewer is another application we provided for large display. It is designed for viewi ...

  9. Spring boot +mybatis 连接mysql数据库,获取JDBC失败,服务器时区价值”Oйu±e×¼e±¼的识别或代表多个时区

    报出的错误 Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connec ...

  10. Luogu4197 Peaks

    题目链接:洛谷 看到“只经过困难值小于等于$x$的路径”. 感觉有点眼熟. ow,就是[NOI2018]归程. 和那道题一样,可以直接建出Kruskal重构树,每次倍增寻找祖先中最上面的不大于$x$的 ...