2017/08/09 ~ 2017/08/11

shell script (bash) の配列

bashには配列というものが存在しないらしい.
stackoverflow.com

が,200から1000まで200ずつ増やした数字をループの中で作りたい状況に遭遇した.
seqコマンドでやりたいことができた.

HIDDEN_UNITS=$(seq 200 200 1000)

for hidden_unit in $HIDDEN_UNITS; do
  python train.py --hidden $hidden_unit
done

これでパラメータを変更しながら実験する作業を自動化できる.

A-un Breathing

阿吽の呼吸 | Aizu Online Judge


カッコの対応が取れているかを判定する問題と同じ.
bool wrongを初期値なしで初期化してWAを大量にもらってハマっていた.
bool wrongの初期値がtrueになる場合とfalseになる場合がある?

stackでもできるはずだけどREをいただいてしまう.なぜ?
http://jag2016-domestic.contest.atcoder.jp/submissions/1501888

//#define _GRIBCXX_DEBUG
#include <bits/stdc++.h>
# define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int main() {
  int n;
  cin >> n;

  int cnt = 0;
  bool wrong = false; // 初期値はtrueなことがある

  string s;
  rep (i, n) {
    cin >> s;
    if (s == "A") {
      cnt++;
    }
    else if (s == "Un") {
      if (cnt > 0) {
        cnt--;
      }
      else {
        wrong = true;
      }
    }
  }

  if (wrong || cnt > 0) {
    cout << "NO" << endl;
  }
  else {
    cout << "YES" << endl;
  }

  return 0;
}
Curry Making

カレー作り | Aizu Online Judge


はじめはカレーの濃度はCよりも低い.
Cよりも濃度が高くなるようにルーを追加し,
そのあとで水を加えれば良い.
そのため,水はルウの個数と切り離して考えることができる.
また,ルウは必ず整数個であることが保証されている.
つまり,ルウの個数を1から適当に大きな数まですべて試せばよい.

//#define _GRIBCXX_DEBUG
#include <bits/stdc++.h>
# define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int main() {
  int r_0, w_0, c, r;
  while(cin >> r_0 >> w_0 >> c >> r, r_0) {

    for (int x=0; x<1001001001; x++) {
      if (c <= (double)(r_0+x*r)/w_0){
        cout << x << endl;
        break;
      }
    }
  }
  return 0;
}