SRM 512 DIV1 Easy - MysteriousRestaurant

問題


http://community.topcoder.com/stat?c=problem_statement&pm=11295&rd=14537

解き方


何日目まで訪れることができるかを固定することで貪欲法で解くことができる。

N日目まで訪れるとすると、1日目+7の倍数・・・6日目+7の倍数のそれぞれについて
一番コストの少ない種類の和をとり、それが予算以下であれば
N日目まで訪れることができる。

コード


class MysteriousRestaurant {

public:

int calc(char ch){
if('A'<=ch && ch<='Z')return ch-'A'+10;
if('a'<=ch && ch<='z')return ch-'a'+36;
return ch-'0';
}


int maxDays(vector<string> prices, int budget) {
int n=prices.size(),m=prices[0].size();
int ret=0;

FORE(i,0,n){
int cost=0;
for(int j=0;j<7&&j<=i;j++){
int sum=1e+9;
for(int k=0;k<m;k++){
int tmp=0;
for(int l=j;l<=i;l+=7)tmp+=calc(prices[l][k]);
sum=min(sum,tmp);
}
cost+=sum;
}
if(cost<=budget)ret=max(ret,i+1);
}

return ret;
}

};

Share this

Related Posts

Previous
Next Post »