michimani.net

パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231) の A/B/C 問題の解法 #ABC231

2024-01-27

パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231) の A/B/C 問題の解法。

実装はこちら atcoder/abc/201-300/231 · michimani/atcoder

A - Water Pressure

A - Water Pressure

\(D\) は整数とあるが、浮動小数点数として受け取り、 \(\frac{D}{100}\) を出力する。

#include <iostream>

using namespace std;

int main()
{
  double d;
  cin >> d;

  cout << d / 100 << endl;
  return 0;
}

提出 #49675592 - パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231)

B - Election

B - Election

\(S_i\) を key 、\(S_i\) の出現回数を value として map に記録する。各 key/value について、 value が最大となる key を見つけて出力する。

#include <iostream>
#include <map>

using namespace std;
using ui = unsigned int;

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

  map<string, ui> sc;
  for (ui i = 0; i < n; i++)
  {
    string s;
    cin >> s;
    sc[s]++;
  }

  string ans = "";
  ui mx = 0;
  auto it = sc.begin();
  while (it != sc.end())
  {
    if (mx < it->second)
    {
      mx = it->second;
      ans = it->first;
    }
    it++;
  }

  cout << ans << endl;
  return 0;
}

提出 #49675575 - パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231)

C - Counting 2

C - Counting 2

\(A_1, A_2, \dots ,A_N\) を受け取ってから昇順にソートしておく。ソート済みの生徒の列を \( \hat{A}_t (1 \leq t \leq N) \) としておく。

各 \(x_q (1 \leq q \leq Q)\) について \( \hat{A}_t \geq x_q \) となる最小の \(t\) を二分探索で求める。

求めたいのは \(x_q\) 以上の生徒の数なので、 \(N-t + 1\) が答えとなる。(実装ではインデックスの都合で \(N-t\) )

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
using ui = unsigned int;

int main()
{
  ui n, q;
  cin >> n >> q;

  vector<ui> a(n, 0);
  for (auto &aa : a)
  {
    cin >> aa;
  }

  sort(a.begin(), a.end());

  for (ui i = 0; i < q; i++)
  {
    ui x;
    cin >> x;

    ui l = 0;
    ui r = n;
    ui mid = 0;
    while (r - l > 1)
    {
      mid = (l + r) / 2;
      if (a[mid] >= x)
      {
        r = mid;
      }
      else if (a[mid] < x)
      {
        l = mid;
      }
    }

    ui ans = x > a[l] ? n - r : n - l;

    cout << ans << endl;
  }

  return 0;
}

提出 #49679069 - パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231)


comments powered by Disqus