zoukankan      html  css  js  c++  java
  • P1106 删数问题 / U83355 删数问题【升级版】

    P1106 删数问题 / U83355 删数问题【升级版】

    贪心+链表

    当一个数字比后面一个数字大时,删去这个数是更优的。

    链表实现O(1)单点删除操作。

    注意删去前导0,并且注意答案为0时不要删光了

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int N=500005;
    char q[N];
    int a[N],L[N],R[N],lq,s;
    int main(){
        int T; scanf("%d",&T);
        while(T--){
            scanf("%s",q);
            lq=strlen(q);
            for(int i=1;i<=lq;++i)
                L[i]=i-1,R[i]=i+1,a[i]=q[i-1]-'0';
            L[lq+1]=lq; R[0]=1;
            scanf("%d",&s);
            for(int i=1;i!=lq+1&&s;){ 
                if(a[i]>a[R[i]]){
                    R[L[i]]=R[i];
                    L[R[i]]=L[i];
                    i=L[i]; --s;
                }else i=R[i]; 
            } 
            for(int i=L[lq+1];i&&s;i=L[i]) R[L[i]]=lq+1,--s;
            bool k=0;
            for(int i=R[0];i!=lq+1;i=R[i])
                if(a[i]||k) printf("%d",a[i]),k=1;
            if(!k) printf("0");
            puts(""); 
        } 
        return 0;
    }
  • 相关阅读:
    springboot模板
    springboot入门
    java自定义注解
    git集成idea
    git的搭建和使用
    Shiro授权
    shiro认证
    shiro入门
    springmvc文件上传
    springmvc入门
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/14992332.html
Copyright © 2011-2022 走看看