SRM560 Div1 Easy - TomekPhone
問題
略
解法
keySizesの各要素s[i]について、ある文字を1〜s[i]回のストロークで入力できるように割り当てることができる
多い文字ほど少ないストロークで入力できるようにするのが明らかに最善だから、ソートして貪欲に割り当てればok
class TomekPhone { public: int minKeystrokes(vector<int> a, vector<int> s) { vector<int> t; each(i,s) reps(j,1,i+1) t.push_back(j); if (a.size()>t.size()) return -1; sort(all(t)), sort(a.rbegin(),a.rend()); int res = 0; rep(i,a.size()) res += a[i] * t[i]; return res; } };
https://community.topcoder.com/stat?c=problem_statement&pm=12296&rd=15182