贪心水题
每个字符都往能够让dist最大的方向变.
#include <cstdio> char a[100010]; int main(){ int n,k; scanf("%d %d",&n,&k); scanf("%s",a); int sum=k; for(int i=0;i<n;i++){ if(a[i]-‘a‘>‘z‘-a[i]){ if(sum<=a[i]-‘a‘){ a[i]=a[i]-sum; sum=0; break; }else{ sum-=(a[i]-‘a‘); a[i]=‘a‘; } }else{ if(sum<=‘z‘-a[i]){ a[i]=a[i]+sum; sum=0; break; }else{ sum-=(‘z‘-a[i]); a[i]=‘z‘; } } } if(sum){ printf("-1"); }else{ printf("%s",a); } scanf("%d %d",&n,&k); return 0; }
时间: 2024-12-18 10:44:52