51nod1255【贪心-栈的应用】
2024-09-08 06:35:19
思路:
大体可以看到:大的越后面越好,但是首先要保证如果他对于一个比他小的字符后面存在他。
主要操作就是利用栈,每次对栈里的元素询问是否比他大,且他的后面还存在。
#include<bits/stdc++.h>
using namespace std;
char s[100010];
int len,num[27];
bool vis[27];
stack<int>q;
vector<char>xs;
int main()
{
xs.clear();
while(!q.empty()) q.pop();
memset(num,0,sizeof(num));
scanf("%s",s);
len=strlen(s);
int x;
for(int i=0;i<len;i++)
{
x=s[i]-'a';
num[x]++;
}
memset(vis,false,sizeof(vis));
for(int i=0;i<len;i++)
{
x=s[i]-'a';
if(vis[x])
{
num[x]--;
continue;
}
if(q.empty())
{
q.push(x);
vis[x]=true;
num[x]--;
}
else
{
while(!q.empty()&&q.top()>x)
{
if(num[q.top()])
{
vis[q.top()]=false;
q.pop();
}
else
break;
}
q.push(x);
vis[x]=true;
num[x]--;
}
}
while(!q.empty())
{
xs.push_back(q.top()+'a');
q.pop();
}
int sz=xs.size();
for(int i=sz-1;i>=0;i--)
printf("%c",xs[i]);
return 0;
}
最新文章
- UML类图符号 各种关系说明以及举例
- Java c3p0连接池
- Leetcode 221. Maximal Square
- Altium Designer 15 --- Make 3D PCB Library with Rhinoceros
- JSBinding + SharpKit / JavaScript 加载流程
- cocos2dx实例开发之flappybird(入门版)
- Android(java)学习笔记141:各种边距设置
- Function Pointer in Delpni
- string s = HttpContext.Current.Server.MapPath(";";);
- php定界符 <;<;<; 的作用及使用注意事项
- jQuery --- 实现 checkbox 样式的单选框
- STM32高级定时器TIM1产生两路互补的PWM波(带死区)
- python学习之路网络编程篇(第五篇)-续篇
- bzoj3678 Katu Puzzle
- sqlalchemy外键的一些东西
- 解决安装YouCompleteMe与Vim版本不兼容问题
- AM335X启动(转)
- javassist实例
- PHP 冒泡排序(Bubble Sort)
- linux学习路线图
热门文章
- Java for LeetCode 125 Valid Palindrome
- Git查看并修改name和email
- netstat参数记录
- ZOJ 3329 One Person Game:期望dp【关于一个点成环——分离系数】
- html5--2.1新的布局元素(1)-header/footer
- 51nod1671【货物运输】
- 2018.3.1 RF module distance test part II-
- 国内镜像pip
- 集训Day13
- UVALive - 7831 :ACM Tax (主席树求树路径上中位数:LCA+主席树)