2008-12-25
SRM407 Div1 Easy: CorporationSalary
再帰的に計算。メモ化。
class CorporationSalary {
int N;
vector<long long> salary;
vector<vector<bool> > t;
long long decide_salary(int id){
if (salary[id] > 0) return salary[id];
long long s=0LL;
rep(j,N){
if(t[id][j]) s+=decide_salary(j);
}
if (s==0LL) s=1LL;
return salary[id] = s;
}
public:
long long totalSalary(vector<string> relations) {
N = relations.size(); //1-50
t.resize(N); tr(t,it) it->resize(N);
rep(i,N) rep(j,N) t[i][j]=(relations[i][j]=='Y');
salary.resize(N); tr(salary,it) *it=0;
long long total=0LL;
rep(i,N) total+=decide_salary(i);
return total;
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20081225