题意:给一个长n(n<10^5)位的数,删除d位,求删除后最大的数。(原数无前导0)

思路:从前往后扫,如果a[i] > a[i-1],则删除a[i-1]。我暴力的用链表实现了……

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <list>
using namespace std; #define N 100020
char str[N];
int main() {
int n, d;
while (scanf("%d%d",&n, &d) != EOF) {
if (n == && d == ) break;
scanf("%s", str);
list<int> num;
num.push_back();
for (int i = ; str[i]; i++) {
num.push_back(str[i]-'');
}
num.push_back(); list<int>::iterator hd, ed, tmp;
hd = num.begin();
ed = num.begin();
hd++;
while (d) {
if (*hd > *ed) {
num.erase(ed);
hd--;
ed = hd;
hd++; d--;
} else {
hd++;
ed++;
}
}
num.pop_front();
num.pop_back();
for (hd = num.begin(); hd != num.end(); hd++) {
printf("%d", *hd);
}
puts("");
}
return ;
}

然而实际上,可以一边输入一边处理(笨笨的)

别人的代码:

#include <cstdio>

int n,m,a;
int t,s[]; int main()
{
LOOP:
{
scanf("%d%d%*c",&n,&m);
if (n== && m==) return ;
m=n-m;
t=;
for (int i=;i<n;++i)
{
a=getchar()-'';
while (t && t+n-i>m && a>s[t-]) --t;
if (t<m) s[t++]=a;
}
for (int i=;i<t;++i) printf("%d",s[i]);
putchar('\n');
}
goto LOOP;
}

uva 11491:Erasing and Winning(贪心)的更多相关文章

  1. 【思路、优化】UVa 11491 - Erasing and Winning

    Juliano is a fan of the TV show Erasing and Winning, where participants are selected in a draw and r ...

  2. UVa 11491 Erasing and Winning (贪心,单调队列或暴力)

    题意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变). 析:拿掉d个数字,还剩下n-d个数字.相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口 ...

  3. UVA 11491 Erasing and Winning 奖品的价值 (贪心)

    题意:给你一个n位整数,让你删掉d个数字,剩下的数字要尽量大. 题解:因为最后数字位数是确定的,而且低位数字对答案的贡献是一定不及高位数字的,所以优先选择选最大且最靠左边的数字,但是有一个限制,选完这 ...

  4. UVA - 11491 Erasing and Winning(奖品的价值)(贪心)

    题意:有一个n位整数(不以0开头),要求删除其中的d个数字,使结果尽量大.(1<=d<n<=10^5) 分析: 1.从头扫一遍,如果当前填的数字小于n-d,则将当前数字填上. 2.如 ...

  5. UVA 11491 Erasing and Winning

    题意: 给你一个n位整数,让你删掉d个数字,剩下的数字要尽量大. 分析: 用了vector数组模拟.如果当前要插入的数>vector数组里的最后一位数,就替换且d-- 代码: #include ...

  6. UVA11491-Erasing ans Winning(贪心)

    Problem UVA11491-Erasing ans Winning Accept: 799  Submit: 5753Time Limit: 3000 mSec Problem Descript ...

  7. 【uva 11491】Erasing and Winning(算法效率--贪心+单调队列)

    题意:有一个N位整数,要求输出删除其中D个数字之后的最大整数. 解法:贪心.(P.S.要小心,我WA了2次...)由于规定了整数的位数,那么我们要尽量让高位的数字大一些,也就是要尽量删去前面小的数字. ...

  8. Erasing and Winning UVA - 11491 贪心

    题目:题目链接 思路:不难发现,要使整体尽量大,应先满足高位尽量大,按这个思路优先满足高位即可 AC代码: #include <iostream> #include <cstdio& ...

  9. 【习题 8-4 UVA - 11491】Erasing and Winning

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑删掉第i位. 则第i+1位就会取代第i位. 则肯定第i+1位比第i位大的话,才比较好. 则从小到大贪心删,找到第一个a[i+1] ...

随机推荐

  1. 阿里云服务器+Tomcat项目+mysql 发布项目全过程

    这个博客管理系统折腾我好几天了. 总结一下整个过程吧! 1.首先这个博客在tomcat下 windows系统可以完全跑起来了,无论是前台或者后台都能实现所有的功能. 2.然后我买了一个域名jasonj ...

  2. mongoTemplate聚合操作Demo

    package com.tangzhe.mongodb.mongotemplate; import com.mongodb.BasicDBObject; import com.mongodb.DBOb ...

  3. git使用问题整理

    git访问远端仓库报"fatal: Authentication failed for"错误的,可能原因是账户密码变更,git配置了使用creditial helper,所以需要取 ...

  4. 用js立即执行函数开发基于bootstrap-multiselect的联动参数菜单

    代码调用方式如下: data=[{F0:总分类cd,F1:总分类name,F2:大分类cd,F3:大分类name,F4:中分类cd,F5:中分类name,F6:小分类cd,F7:小分类name},.. ...

  5. 2 - JVM随笔分类(JVM堆的内存回收)

    JVM常用的回收算法是: 标记/清除算法 标记/复制算法 标记/整理算法 其中上诉三种算法都先具备,标记阶段,通过标记阶段,得到当前存活的对象,然后再将非标记的对象进行清除,而对象内存中对象的标记过程 ...

  6. 手把手教你启用RemoteFX以及Hyper-V GPU卸载

    [TechTarget中国原创] 微软的RemoteFX特性可以帮助改善虚拟机图形密集型应用工作负载的性能. 服务器虚拟化已经成熟到大多数工作负载都能够在虚拟机内运行的程度.毫无疑问,与其他工作负载相 ...

  7. 【4Sum】cpp

    题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...

  8. Appium Windows服务端GUI详解

    Appium Windows服务端GUI各项的解释,从官方扒过来的,界面图标和最新版本有点不太一样,其他还是比较简单易懂的 原文https://github.com/appium/appium-dot ...

  9. 内置函数,重要的四个reduce,map,lambda,filter

    #filter过滤器#filter(函数,列表)#把列表里的元素序列化,然后在函数中过滤# str=["a","b","c","d ...

  10. maven国内镜像

    <?xml version="1.0" encoding="UTF-8"?> <!--Licensed to the Apache Softw ...