题目大意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变)。

题目分析:拿掉d个数字,还剩下n-d个数字。相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口滑动优先选取大的。

代码如下:

# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std;struct Num
{int val,id;
};
Num num[100005],que[100005];
char p[100005];
int vis[100005];void solve(int k,int l)
{int head=0,tail=-1;for(int i=0;i<k-1;++i){while(head<=tail&&que[tail].val<num[i].val)  --tail;++tail;que[tail]=num[i];}int id=-1;for(int i=k-1;i<l;++i){while(head<=tail&&que[tail].val<num[i].val) --tail;++tail;que[tail]=num[i];while(que[head].id<i-k+1||que[head].id<=id) ++head;printf("%d",que[head].val);id=que[head].id;}printf("\n");
}int main()
{int n,d;while(scanf("%d%d",&n,&d)&&n+d){scanf("%s",p);int l=strlen(p);for(int i=0;i<l;++i)num[i].val=p[i]-'0',num[i].id=i;solve(d+1,l);}return 0;
}

  

转载于:https://www.cnblogs.com/20143605--pcx/p/4871082.html

UVA-11491 Erasing and Winning (单调队列)相关推荐

  1. UVA 11491 - Erasing and Winning 贪心水题

    题目链接:UVA 11491 - Erasing and Winning(考虑到UVA的访问不是很方便,这里就放个vjudge的链接吧) 题目 Description Juliano is a fan ...

  2. uva 11491——Erasing and Winning

    题意:给定一个n位的整数,要求从中去掉k位,使得剩下的数字最大. 思路:单调队列.在满足删除的数等于k 的前提下求一个不敌减的序列. code: #include <iostream> # ...

  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

    明明10e5*10不会超时的, 超了半天, 伤心死了, 优化半天才勉强过了. Accepted 0 KB 882 ms C++ 4.8.2 代码应该还算好理解吧. #include<cstdio ...

  6. UVA - 11491 Erasing and Winning

    // 在满足要求的情况下找已经选出的答案. // #include<iostream> #include<cstdio> #include<string> usin ...

  7. Uva 11491 Erasing and Winning(贪心)

    这道题看了别人的博客才做出来的,思路还是不行. 解题思路:因为要获得最大的数,所以从高位开始枚举,再从这一位向前扫一遍删掉比这一位小的数,当碰到比它大的数时结束.最后扫完一遍后,如果删的数不够m,再从 ...

  8. 11491 - Erasing and Winning(贪心)

    一开始真的没想到这竟然是一道贪心题目.  不过后来仔细想想也就明白了. 我采取的做法是自前向后扫一遍,用一个指针rear动态维护答案数组中的最后一个元素,如果遇到一个比它大的数s[i],那么从它开始将 ...

  9. 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈

    总结  本章主要关注一个重要的问题 – 单调队列和单调栈的使用  同时还有一些其他的问题,如扫描法,递归的思想, 构造, 分治, 二分等 知识点 单调队列 和 单调栈 题目 UVA - 1606 Am ...

  10. UVA 1471 Defense Lines 单调队列优化

    题意:给出长度为N的序列,现在让你删除一个连续的.任意长度的序列,从而形成一个最长的上升子序列. 思路:第一遍看错题了,以为是标准的最长上升子序列,然后就错了. 再看一遍题意,其实只是让你删除一个连续 ...

最新文章

  1. html转换pdf 分页,(html2canvas jspdf)html转pdf带分页
  2. 智能车竞赛计时系统感应线圈放在节能充电线圈上输出电压会多大?
  3. react-router 按需加载
  4. 属性名、变量名与 内部关键字 重名 加
  5. Linux C 数据结构——二叉树
  6. LSGO软件技术团队2015~2016学年第四周(0921~0927)总结
  7. 大厂面试算法系列-如何实现链表的逆序(一)-原地逆序
  8. ubuntu终端命令停止_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止【后台运行程序】...
  9. lfw分类 python_Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)...
  10. 华为手机线刷工具_手机刷机、救砖教程
  11. linux进程物理内存虚拟内存,Linux进程的内存使用情况
  12. stack Error: EACCES: permission denied
  13. 前端-css美化网页元素(一)字体样式,文本样式
  14. NDB和InnoDB存储引擎比较
  15. 超棒的电烙铁的焊接方法图解
  16. 【清华夏令营2016模拟5.31】图森破
  17. 彩票股票金融与运气之研究(二)-飘渺的希望
  18. Aria2整合FileRun自建离线下载网
  19. [渝粤教育] 中国地质大学 Java语言程序设计 复习题
  20. CTFHub SSRF总结

热门文章

  1. Linux下squid代理缓存服务环境部署
  2. Undefined symbols for architecture x86_64:
  3. 关于Mysql修改密码的方法汇总
  4. sqlite 常用数据类型
  5. TIME-WAIT状态
  6. java in list,Java 8流过滤:IN子句
  7. CryptoTab 服务器_宁畅AI服务器X640 首登MLPerf 斩获30项世界第一
  8. 2.2创建Spring数据REST服务
  9. 6. 同步化器(Synchronizers)
  10. 【渝粤教育】国家开放大学2018年秋季 0056-21T知识产权法 参考试题