https://ac.nowcoder.com/acm/contest/123
A
不得不说,还是不喜欢英文的题面
题意:由a到b变化次数最少是多少
先排序,如果一样,说明是0
不一样,根据规则
a <= b, b - a;
否则 a先变道Z 再到b; 此时 我们可以想想一个圆,变化次数就是26 - (a - b)要想次数最少,也就是a - b最大,所以a的最后一个 和此时的b
#include<bits/stdc++.h> using namespace std; string a, b; int main() { //freopen("in","r",stdin); ios::sync_with_stdio(0); while (cin >> a >> b) { int s = 0; int s1 = 0, s2 = a.length() - 1; sort(a.begin(), a.end()); sort(b.begin(), b.end()); for (int i = 0; i < a.length(); i++) { if (a[s1] <= b[i]) s += b[i] - a[s1++]; else s += 26 - (a[s2--] - b[i]); } cout << s << endl; } return 0; }