题意:有一个N位整数,要求输出删除其中D个数字之后的最大整数。

解法:贪心。(P.S.要小心,我WA了2次...)由于规定了整数的位数,那么我们要尽量让高位的数字大一些,也就是要尽量删去前面小的数字。于是我们得到的数字前面是有一串下降的单调队列的,所以最开始就要维护这个。但是要注意——我们不是立马得到了这 n-d 位的整数,而是经过维护单调队列调整后的。因此我下面代码的那句break出循环是错的。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<iostream>
4 using namespace std;
5
6 const int N=(int)1e5+10;
7 int a[N];
8
9 int main()
10 {
11 while (1)
12 {
13 int n,d;
14 scanf("%d%d",&n,&d);
15 if (!n&&!d) break;
16 char c=getchar();
17 int t,cnt;
18 t=0;
19 while (c<'0'||c>'9') c=getchar();
20 while (c>='0'&&c<='9') a[++t]=c-'0', c=getchar();
21 t=1, cnt=0;
22 for (int i=2;i<=n;i++)
23 {
24 while (a[i]>a[t] && t>0 && cnt<d) t--,cnt++;
25 //if (t==n-d) break;//删d个,不能直接把后面的删了
26 a[++t]=a[i];
27 }
28 for (int i=1;i<=n-d;i++) printf("%d",a[i]);
29 printf("\n");
30 }
31 return 0;
32 }

最新文章

  1. 也说说angularJs里的evalAsync
  2. 如何创建C# Closure ?
  3. Android中BaseAdapter的基本用法和加载自定义布局!
  4. MySql的大小写问题
  5. STL,ATL,WTL的联系与区别
  6. getpwent()
  7. [译]Stairway to Integration Services Level 3 - 增量导入数据
  8. python学习笔记之一:列表与元组
  9. improper Advertising identifier [IDFA] Usage. Your app contains the Advertising Identifier [IDFA] AP
  10. Asycn/Await 异步编程初窥
  11. java队列——queue详细分析
  12. 多线程&amp;定时器Timer&amp;同步&amp;线程通信&amp;ThreadLocal
  13. c/c++ 模板函数的重载
  14. PHP中使用CURL实现GET和POST请求(转载)
  15. Socket.IO学习之基础入门
  16. Linux命令之shutdown
  17. Java实现bt文件下载、制作、解析、磁力链接
  18. 关于css伪类
  19. Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)
  20. node学习笔记第一天

热门文章

  1. 【Java基础】基本语法-程序流程控制
  2. SonarQube学习(六)- SonarQube之扫描报告解析
  3. 深入理解nodejs中的异步编程
  4. (二)数据源处理2-xlrd操作excel
  5. rename命令和批量重命名
  6. Kubernetes CoreDNS 状态是 CrashLoopBackOff 报错
  7. windows下如何安装Python、pandas
  8. C#使用OracleParameter操作数据库
  9. PHP设计模式之装饰器模式(Decorator)
  10. 大型 web 前端架构设计-面向抽象编程入门