Skip to content

takumi34/atcoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AtCoder

contests

  • abc = AtCoder Beginner Contest
  • agc = AtCoder Grand Contest
  • arc = AtCoder Regular Contest

Tips

  • 入力例1
int n,m;
cin >> n >> m;
  • 入力例2
int n;
vector<int> v(n);
rep(i, n) { cin >> v[i]; }
  • 入力例3
vector<int> v(m);
rep(i, m) { cin >> v[i]; }
  • 出力例1
cout << n << m << endl;
  • 出力例2
printf("%.10f\n", a);
  • char型の数値をintに変換
char c = '9';
int i = c - '0';
  • string型をll, intに変換
string a = "10";
ll b = stoll(a);
int c = stoi(a);
  • mapのforループと各要素へのアクセス
// iterator
for (auto i = mp.begin(); i != mp.end(); i++) {
  ll a = i->first, b = i->second;
  debug2(a, b);
}

// range based
for (auto i : mp) {
  ll a = i.first, b = i.second;
  debug2(a, b);
}
  • 同じものが何個あるか数え上げ(mapのキーに対応する要素をインクリメント)
int n;
cin >> n;
vector<int> v(n);
rep(i, n) { cin >> v[i]; }

map<int, int> cnt;
rep(i, n){cnt[v[i]]++;} 
  • 最大公約数(gcd)、最小公倍数(lcm)
ll gcd(ll x, ll y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
ll lcm(ll a, ll b) {
  return a / gcd(a, b) * b;
}
  • 組み合わせ(nCr)
int combination(int n, int r) {
  int num = 1;
  for (int i = 1; i <= r; i++) {
    num = num * (n - i + 1) / i;
  }
  return num;
}
  • 全て置き換え(boost)
#include <boost/algorithm/string/replace.hpp>

 string a = "aiuelaia";
 boost::algorithm::replace_all(a, "a", "u");
  • 配列の重複要素を削除する
sort(all(v));
v.erase(unique(all(v)), v.end());
  • 降順にソート
sort(all(v), greater<int>());
  • 反転させる
string s = to_string(i);
string r = string(s.rbegin(), s.rend());
  • 各桁の和
int sumOfDigits(int n){
   if(n < 10)  return n;
   return sumOfDigits(n/10) + n%10;
}
  • 素数判定
bool isPrime(ll n) {
   if (n == 1)return false;
   for (int i = 2; i * i <= n; i++) {
      if (n % i == 0)return false;
   }
   return true;
}
  • 約数列挙(sortなし)
vector<ll> divisor(ll n) {
  vector<ll> divs;
  for (int i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      divs.push_back(i);
      if (i != n / i) divs.push_back(n / i);
    }
  }
  //sort(all(divs));
  return divs;
}
  • ランレングス圧縮
vector<pair<char, int>> runLength(string const& s) {
  vector<pair<char, int>> ans;

  int num = 1;
  for (int i = 0; i < (int)s.size() - 1; i++) {
    if (s[i] == s[i + 1]) {
      num++;
    } else {
      ans.push_back(make_pair(s[i], num));
      num = 1;
    }
  }
  ans.push_back(make_pair(s.back(), num));

  return ans;
}

About

ACを上げていく

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages