BEN2のブログ

たまに書いています。

AtCoder 復習用

自分の復習用に AtCoder の問題を雑に並べています。
最近は、整理がつかなくなってきています。

いつも読む

大変お世話になっております。

テーマ別

全探索
再帰関数
bit
二分探索
三分探索
累積和
二次元累積和
いもす法
しゃくとり法
グリッド
グラフ
Union-Find 木
場合の数
重複組合せ
  • そもそも
    •  _{n} {\rm{H}} _{r} \, (= {_{n+r-1} {\rm{C}} _{r}}) :  n 種類のものから重複を許して  r 個選ぶ場合の数

例 : 白球 5 個、赤球 3 個、黒球 2 個について
(1) 10 個の球を 6 人に分ける方法 (1 個ももらわない人がいてもよい)
(2) 10 個の球を 2 組に分ける方法
(1)  {_{6} \rm{H} _{5}} \times {_{6} \rm{H} _{3}} \times {_{6} \rm{H} _{2}}
(2)  ( {_{2} \rm{H} _{5}} \times {_{2} \rm{H} _{3}} \times {_{2} \rm{H} _{2}} - 2 ) \div 2!

確率・期待値
素数・約数・倍数
剰余
整数 (未分類)
文字列
#include <bits/stdc++.h>
using namespace std;

int main() {
  string s; cin >> s;
  int cnt = 0;
  char tmp = s.at(0);
  for (int i = 0; i < s.size(); i++) {
    if (s.at(i) == tmp) cnt++;
    else {
      cout << tmp << to_string(cnt);
      cnt = 1;
      tmp = s.at(i);
    }
    if (i == s.size()-1) {
      cout << tmp << to_string(cnt) << endl;
    }
  }
}
#include <bits/stdc++.h>
using namespace std;

int main() {
  string X; cin >> X;
  stack<char> s;
  for (int i = 0; i < X.size(); i++) {
    if (X.at(i) == 'S') s.push('S');
    else {
      if (s.empty() || s.top() == 'T') s.push('T');
      else s.pop();
    }
  }
  cout << s.size() << endl;
}
未分類 (実装問題)
未分類