2021/04/09
概略
一週間が終わってしまった. 今週は過去のクソコードと戦う週だった. やはりクソコードはクソである.
ということを強く感じて以前に買ったリファクタリングを再履修することにした.
少なくとも自分だけでも読めるコードを書いていきたい.
今日の競プロ
もはや競プロ精進日記になりつつあるなぁとちょっと思っている. 明日はCodeJamのRound1がある. 参加できたらしよう.
今日は
ヒューリスティックに解けるタイプの400点. これ400点なのか...? とか言っていたら計算ミスってWAを出した. 反省.
前から'a'に出来るならして, それ以外はスルー, 余った分を最後の文字に適用したことにすればよい.
Submission #21586222 - CODE FESTIVAL 2016 qual A
#include <bits/stdc++.h> using namespace std; int main(){ string s; int k, n; cin >> s >> k; n = s.size(); // 先頭から'a'に出来るならaにする for(int i=0; i<n-1; i++){ if(s[i] == 'a') continue; int mv = 'z' - s[i] + 1; if(mv <= k){ s[i] = 'a'; k -= mv; } } // 末尾を余った分処理したことにする s[n-1] = char((int(s[n-1] - 'a') + k) % 26) + 'a'; cout << s << endl; }