一言(ヒトコト)

ASC32 F

题目来源
好吧我也不知道链接

题面

智能前缀算法实验室(Laboratory of Intelligent Prefixes Algorithms, LIPA)正在测试一台前缀反转机(Reversing Prefixes Machine, RPM)。该机器的工作方式如下:输入为一个长度为 n 的字符串 s 和一个序列 1≤\(a_1\)<\(a_2\)<⋯<\(a_k\)≤n

初始时,字符串 s 被放入机器的内部寄存器中。随后,对于每个从1 到 k 的 i,机器取出寄存器中当前字符串的前缀 [1…\(a_i\)] 并将其反转。所有操作完成后,寄存器中的字符串即为机器的输出。
例如,如果机器的输入为
s="abacaba" 且 \(a_1\)=2,\(a_2\)=4则机器的输出为"caababa"。

LIPA 的科学家们希望找出,对于给定的输入字符串s,机器可能输出的字典序最小的字符串是什么。请帮助他们找到这个字符串。

贪心地去想就好了
如果字典序比队首小(等于也可以) 就放队首

否则放队尾

注意
c-'a'<=q.front()-'a'
而不是c-'a'<q.front()-'a'
好吧我很蠢这一点写错了

点击查看代码
#include<bits/stdc++.h>
#define Elysia return
using namespace std;
typedef long long LL;
const int N=5e5+10;
string s;
deque<char> q;
int main(){
	cin>>s;
	for(char c:s){
		if(q.size()&&c-'a'<=q.front()-'a'){
			q.push_front(c);
		}
		else{
			q.push_back(c);
		}
	}
	while(q.size()){
		cout<<q.front();
		q.pop_front();
	}
	Elysia 0;
} 
/*
abacaba
*/

posted @ 2026-08-03 17:53  冬冬猫  阅读(1)  评论(0)    收藏  举报