My Solution
贪心、字典序
必须改一个子串使得得到的新串字典序最小
所以从左往右改第一个不是a的, 然后连着的都要改直到碰到一个a为止
但是exactly one non-empty substring
所以全是a的时候也要改, 把最后一个a改成 z
#include
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 1e6 + 8;
string s;
int main()
{
#ifdef LOCAL
freopen("c.txt", "r", stdin);
//freopen("o.txt", "w", stdout);
int T = 3;
while(T--){
#endif // LOCAL
ios::sync_with_stdio(false);
cin.tie(0);
cin>>s;
int sz = s.size();
bool flag = false;
char ch;
for(int i = 0; i < sz; i++){
if(!flag){
if(s[i] == 'a') ;
else{
flag = true;
ch = s[i];
s[i] = (ch - 1);
}
}
else{
if(s[i] == 'a') break;
else{
ch = s[i];
s[i] = (ch - 1);
}
}
}
if(!flag){
s[sz - 1] = 'z';
}
cout<<s<<endl;
#ifdef LOCAL
cout<<endl;
}
#endif // LOCAL
return 0;
}
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/aim-tech-round-3-div-2-c-letters-cyclic-shift/
共有 0 条评论