Bear and String Distance( 贪心)
2018-03-30 15:01
337 查看
Limak is a little polar bear. He likes nice strings — strings of length n, consisting of lowercase English letters only.
The distance between two letters is defined as the difference between their positions in the alphabet. For example,
, and
.
Also, the distance between two nice strings is defined as the sum of distances of corresponding letters. For example,
, and
.
Limak gives you a nice string s and an integer k. He challenges you to find any nice string s' that
. Find any s' satisfying the given conditions, or print "-1" if it's impossible to do so.
As input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use gets/scanf/printf instead of getline/cin/cout in C++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.
Input The first line contains two integers n and k (1 ≤ n ≤ 105, 0 ≤ k ≤ 106).
The second line contains a string s of length n, consisting of lowercase English letters.
Output If there is no string satisfying the given conditions then print "-1" (without the quotes).
Otherwise, print any nice string s' that
.
Example Input
给一个长度为n 字符串,求一个距离此字符串为k 的字符串
字符串距离:两个字符串对应字符距离的和
思路:优先转换成'a'或'z'#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main(){
int n,k;
scanf("%d%d",&n,&k);
string str;
cin>>str;
for(int i=0;i<str.size();i++){
int x='z'-str[i];
int y=str[i]-'a';
if(x>y){
if(k>x){
str[i]='z';
k-=x;
}
else{
str[i]+=k;
k=0;
}
}
else{
if(k>y){
str[i]='a';
k-=y;
}
else{
str[i]-=k;
k=0;
}
}
if(k==0) break;
}
if(k==0) cout<<str<<endl;
else cout<<"-1"<<endl;
return 0;
}
The distance between two letters is defined as the difference between their positions in the alphabet. For example,
, and
.
Also, the distance between two nice strings is defined as the sum of distances of corresponding letters. For example,
, and
.
Limak gives you a nice string s and an integer k. He challenges you to find any nice string s' that
. Find any s' satisfying the given conditions, or print "-1" if it's impossible to do so.
As input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use gets/scanf/printf instead of getline/cin/cout in C++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.
Input The first line contains two integers n and k (1 ≤ n ≤ 105, 0 ≤ k ≤ 106).
The second line contains a string s of length n, consisting of lowercase English letters.
Output If there is no string satisfying the given conditions then print "-1" (without the quotes).
Otherwise, print any nice string s' that
.
Example Input
4 26 bearOutput
roarInput
2 7 afOutput
dbInput
3 1000 heyOutput
-1题意:
给一个长度为n 字符串,求一个距离此字符串为k 的字符串
字符串距离:两个字符串对应字符距离的和
思路:优先转换成'a'或'z'#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main(){
int n,k;
scanf("%d%d",&n,&k);
string str;
cin>>str;
for(int i=0;i<str.size();i++){
int x='z'-str[i];
int y=str[i]-'a';
if(x>y){
if(k>x){
str[i]='z';
k-=x;
}
else{
str[i]+=k;
k=0;
}
}
else{
if(k>y){
str[i]='a';
k-=y;
}
else{
str[i]-=k;
k=0;
}
}
if(k==0) break;
}
if(k==0) cout<<str<<endl;
else cout<<"-1"<<endl;
return 0;
}
相关文章推荐
- Educational Codeforces Round 8 C. Bear and String Distance 贪心
- 【CodeForces 628C 】Bear and String Distance (贪心)
- Educational Codeforces Round 8 C. Bear and String Distance(贪心)
- CodeForces 628 C. Bear and String Distance(贪心)
- Codeforces 628 C. Bear and String Distance【贪心】
- CF 628C --- Bear and String Distance --- 简单贪心
- Codeforces C - Bear and String Distance (贪心)
- CodeForces 628 C C - Bear and String Distance
- Codeforces CF#628 Education 8 C. Bear and String Distance
- codeforces 628C C. Bear and String Distance
- CodeForces 628C - Bear and String Distance
- HDU 1516 String Distance and Transform Process(经典DP)
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C. Bear and Different Names 贪心
- hdu 1516 String Distance and Transform Process(编辑距离+记录路径)
- 【VK Cup 2016 - Round 1 (Div 2 Edition)D】【二进制思想 扫描贪心】Bear and Polynomials 2的幂次多项式改变一位使得和为0
- Codeforces Round #442 (Div. 2)B. Nikita and string(字符串,贪心)
- CF - 791C. Bear and Different Names - 贪心+模拟
- hdu-1516 String Distance and Transform Process(编辑距离+路径)
- codeforces B. Pasha and String(贪心)
- 杭电acm之1516--String Distance and Transform Process