読者です 読者をやめる 読者になる 読者になる

SRM427 Div2Easy LoveCalculator

問題概要
'L','O','V','E'の頻度を調べて、与えられた式によって得点を最大化せよ。

解法
概要の通りの実装。

class LoveCalculator {
public:
  
  int calc(int l, int o, int v, int e) {
    return ((l+o)*(l+v)*(l+e)*(o+v)*(o+e)*(v+e))%100;
  }
  
  string findBoy(string girl, vector <string> boys) {
    
    map<char, int> mp, mp2;
    
    for(int i=0; i<girl.size(); i++) {
      mp[girl[i]]++;
    }
    
    sort(ALL(boys));
    
    int mx = -INF;
    string ans = boys[0];
    int const N = boys.size();
    for(int i=0; i<N; i++) {
      mp2 = mp;
      int const M = boys[i].size();
      for(int j=0; j<M; j++) {
	mp2[boys[i][j]] ++;
      }
      int temp;
      if(mx < (temp = calc(mp2['L'], mp2['O'], mp2['V'], mp2['E']))) {
	ans = boys[i];
	mx = temp;
      }
    }
    
    return ans;
  }
};