1. 链接:https://www.nowcoder.com/acm/contest/84/A
  2. 来源:牛客网
  3. 【出处】:http://codeforces.com/contest/196/problem/A 【Codeforces Round #124 (Div. 1) A】
  4. 题目描述
  5. 给定字符串ss只包含小写字母,请求出字典序最大的子序列。
  6. 子序列:https://en.wikipedia.org/wiki/Subsequence
  7. 字典序:https://en.wikipedia.org/wiki/Lexicographical_order
  8. 输入描述:
  9. 一行一个字符串s (1 <= |s| <= 100,000)。
  10. 输出描述:
  11. 字典序最大的子序列。
  12. 示例1
  13. 输入
  14. ababba
  15. 输出
  16. bbba
  17. 示例2
  18. 输入
  19. abbcbccacbbcbaaba
  20. 输出
  21. cccccbba

【分析】:贪心。从后面找单调递增的不连续序列。

【出处】:

Codeforces Round #124 (Div. 1)

【代码】:

  1. /*
  2. 从后向前找,后面的总是小于等于前面的才能保证字典序最大
  3. 最后一个字符肯定包含在内
  4. */
  5. #include <bits/stdc++.h>
  6. #define ll long long
  7. using namespace std;
  8. const int N = 1e5+10;
  9. char s[N],ans[N];
  10. int main()
  11. {
  12. cin>>s;
  13. int k=0;
  14. char Max='a';
  15. for(int i=strlen(s)-1;i>=0;i--){
  16. if(s[i]>=Max){
  17. Max=s[i];
  18. ans[k++]=s[i];
  19. }
  20. }
  21. for(int i=k-1;i>=0;i--){
  22. printf("%c",ans[i]);
  23. }
  24. cout<<endl;
  25. return 0;
  26. }
  1. /*
  2. 每次取当前剩余字典序最大的字符。
  3. 什么是字典序最大的子序列。就是从尾巴到头的最长非递减子序列~
  4. erase用法:
  5. (1)string& erase ( size_t pos = 0, size_t n = npos );
  6. (2)iterator erase ( iterator position );
  7. (3)iterator erase ( iterator first, iterator last );
  8. 也就是说有三种用法:
  9. (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
  10. (2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
  11. (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
  12. */
  13. #include<bits/stdc++.h>
  14. using namespace std;
  15. int main()
  16. {
  17. string s;
  18. cin>>s;
  19. ostringstream ss;
  20. while(!s.empty())
  21. {
  22. string::iterator it=max_element(s.begin(),s.end());
  23. ss<<*it;
  24. s.erase(s.begin(),it+1);
  25. }
  26. cout<<ss.str()<<endl;
  27. }

牛客练习赛16 A 字典序最大的子序列【贪心】的更多相关文章

  1. 牛客练习赛16 F 选值【二分/计数】

    链接:https://www.nowcoder.com/acm/contest/84/F 来源:牛客网 题目描述 给定n个数,从中选出三个数,使得最大的那个减最小的那个的值小于等于d,问有多少种选法. ...

  2. 牛客练习赛16 C 任意点【并查集/DFS/建图模型】

    链接:https://www.nowcoder.com/acm/contest/84/C 来源:牛客网 题目描述 平面上有若干个点,从每个点出发,你可以往东南西北任意方向走,直到碰到另一个点,然后才可 ...

  3. 牛客练习赛16 B 漂亮的树【哈希hash/思维】

    链接:https://www.nowcoder.com/acm/contest/84/B 来源:牛客网 题目描述 街上有n棵树,标号为1...n,第i棵树的高度为ai. 定义这n棵树是漂亮的,当且仅当 ...

  4. 牛客练习赛16 E - 求值

    题目大意: 链接:https://www.nowcoder.com/acm/contest/84/E 给定n个数字a1, a2, ..., an. 定义f(l, r) = al | al+1| ... ...

  5. 牛客练习赛28-B(线段树,区间更新)

    牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 ...

  6. 牛客练习赛11 假的字符串 (Trie树+拓扑找环)

    牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...

  7. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  8. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  9. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

随机推荐

  1. 初学JS——实现基于计时器的小游戏。

    这几天一直在看网易云课堂上免费的JS课程,正好今天看到讲了计时器setInterval,第一感觉就是像C#里的TIMER.然后课程里举得例子正好通过计时器改变新生成窗口的位置, 然后就突然有了灵感!可 ...

  2. Python列表深浅复制详解

    转自:https://www.cnblogs.com/blaomao/p/7239203.html 在文章<Python 数据类型>里边介绍了列表的用法,其中列表有个 copy() 方法, ...

  3. selenium fluentwait java实例

    本文转自:http://www.programcreek.com/java-api-examples/index.php?api=org.openqa.selenium.support.ui.Flue ...

  4. protobuf-net与FlatBuffers

    protobuf-net Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法.它比xml格式要少的多,甚至比二进制数据格式也 ...

  5. Leetcode 668.乘法表中第k小的数

    乘法表中第k小的数 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字. 例 1: 输入 ...

  6. 什么是SQL注入?(理解)

    SQL注入攻击是黑客对数据库进行攻击的常用手段之一.一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,注入者可以在表单中输入一段数据库查询代码并提交,程序将提交的信息拼凑生成一个完整s ...

  7. 【bzoj2770】YY的Treap 权值线段树

    题目描述 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了YY小朋友Treap(一种平衡树,通过对每个节点随机分 ...

  8. LeetCode -- Longest Increasing Subsequence(LIS)

    Question: Given an unsorted array of integers, find the length of longest increasing subsequence. Fo ...

  9. POJ 2942 Knights of the Round Table 补图+tarjan求点双联通分量+二分图染色+debug

    题面还好,就不描述了 重点说题解: 由于仇恨关系不好处理,所以可以搞补图存不仇恨关系, 如果一个桌子上面的人能坐到一起,显然他们满足能构成一个环 所以跑点双联通分量 求点双联通分量我用的是向栈中pus ...

  10. UVALive4374 Drive through MegaCity

    题目戳这里. 首先我们对坐标进行离散化,有用的点就变成了\(O(N)\)个.我们假设\(A\)点\(B\)的右边(从\(A\)往\(B\)跑和从\(B\)往\(A\)跑等价),然后我们很容易发现不会往 ...