题目大意:给一个数字(开头非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;
}

  

最新文章

  1. [WPF系列]-基础 TextBlock
  2. [转] Jenkins实战演练之Windows系统节点管理
  3. [置顶]PADS PCB功能使用技巧系列之NO.006- 如何实现OrCAD与PADS Layout同步?
  4. KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定
  5. SAE上安装第三方模块
  6. 判断App是否在后台运行
  7. Poj(1325),最小点覆盖
  8. elastic
  9. POJ 1279 Art Gallery(半平面交求多边形核的面积)
  10. Java---网络编程(2)-UDP
  11. 导致flash屏幕重绘的几种方式及避免重绘的方法
  12. 工作流Jpbm4.4工作流知识点总结(工作流开发宝典)
  13. TurnipBit:和孩子一起动手DIY“滚动”的生日礼物
  14. cmd wevtutil 读取远程日志错误,Error:在没有配置的 DNS 服务器响应之后,名称 Server23.localdomain 的名称解析超时。
  15. Luogu P2490「JSOI2016」黑白棋
  16. CS50.3
  17. 运行程序,解读this指向---case4
  18. 关于hot miami的沙盒生存俯视角射击游戏
  19. CG图形学的工具
  20. Codeforces Round #526 Div. 1 自闭记

热门文章

  1. jenkins之升级
  2. BigDecimal 解决double精度丢失问题(加减乘除)
  3. 【转】jQuery.ajax向后台传递数组问题
  4. Python的Flask框架应用调用Redis队列数据的方法
  5. PHP关于函数的参数问题
  6. 解决 Ubuntu 下 Sublime Text 无法输入中文的问题
  7. P2750 贰五语言Two Five USACO5.5 记忆化搜索
  8. 第1章 1.7计算机网络概述--理解OSI参考模型分层思想
  9. mysql 数据操作 单表查询 group by 介绍
  10. IOS 自己定义UITableView