Drkcore

03 07 2008 cpp topcoder Tweet

SRM407-DIV2-500

とりあえず一巡させると必ず一つはサラリーが求まるから、全部求まるまでループ。 他の人の解答見てmemsetの使い方を覚えた。

class CorporationSalary {
  long long  salary[50];
  bool isdetermind(int numbers){
    for(int i =0;i<numbers;i++) if(salary[i] == 0) return false;
    return true;
  }

public:
  long long totalSalary(vector <string> relations) {
    long long total = 0;
    int num = relations.size();
    for(int i=0;i<num;i++) salary[i] = 0; 
    //  memset(salary,0,sizeof(salary));

    int i = 0;
    while(!isdetermind(num)){
      i == num-1 ? i=0 : ++i;

      if( salary[i] > 0) continue;
      if(relations[i].find('Y') == string::npos) {
        salary[i] = 1;
        continue;
      }

      long long r = 0;
      int flag = 0;
      for(int j=0;j<relations[i].size();j++){
        if(relations[i][j] == 'Y') {
          salary[j] > 0  ? r += salary[j] : flag++;
        }
      }

      if(flag == 0) salary[i] = r;
    }

    for(int k=0;k<num;k++) total += salary[k];
    return total; 
  }
};

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021