Asa's Blog

ABC206

Tags: AtCoder  ABC  Competitive-Programming 

Published on 2021.06.19. Last Modified on 2021.06.22.

今日はきつかったです…。(早速感想から入っていくパターン)

今回は 3 完です。D 飛ばして E が解けそうだったけど、うまくパターンが作れなかった…。

問題概要

A

「$N$ 円 + 税(8%)」が、206 円より安ければ Yay!、同じなら so-so、高いなら:(

B

毎日 $i$ 日目に $i$ 円を貯金するとき、$N$ 円以上になるのは何日目?

C

$A=(A_1, A_2,\dots,A_N)$ で、$1 \le i \lt j \le N$ かつ $A_i \ne A_j$ となる $(i,j)$ の組はいくつ?

提出結果

ここから 全体の提出結果がわかります。

A

提出 #23570003 - AtCoder Beginner Contest 206(Sponsored by Panasonic)

#include <bits/stdc++.h>
using namespace std;
int main(){
  double n;
  cin >> n;
  n *= 1.08;
  n = floor(n);
  if(n < 206){ cout << "Yay!" << endl; }
  else if(n == 206){ cout << "so-so" << endl; }
  else{ cout << ":(" << endl; }
  return 0;
}

普通に、double型でインプットしてから、計算して場合分けしました。税抜で場合分けする方法もあるとは思うけど、計算がめんどくさくてやめました()。

かなり Typo してしまい、21:01:41 に提出。まあ許容範囲かな…。

B

B - Savings

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
int main(){
  ull n;
  cin >> n;
  int c=1;
  while(c * (c+1) / 2 < n){
    c++;
  }
  cout << c << endl;
  return 0;
}

えっと、Wolfram で等差数列の総和公式 ${1 \over 2} n(n+1) > 10^9$ を計算してみた結果、$N \gt 44720.9$となったので、全探索しました。

提出時刻は 21:04:50 。まあ Wolfram 使用+Typo だから許容範囲…。
(今回は自分に甘々なスタイル)

C

提出 #23594275 - AtCoder Beginner Contest 206(Sponsored by Panasonic)

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef vector<ull> ull1d;
#define loop(i,n) for(ull i=0;i<n;i++)
#define all(vec) vec.begin(),vec.end()

int main(){
  ull n;
  cin >> n;
  ull1d a(n), uni(0);
  loop(i,n){ cin >> a[i]; }
  sort(all(a));
  ull prev = 1e10;
  loop(i,n){
    if(prev != a[i]){
      uni.push_back(1);
      prev = a[i];
    }
    else{
      uni[uni.size()-1]++;
    }
  }
  ull ans = 0;
  loop(i,uni.size()){
    ans += (n - uni[i]) * uni[i];
  }
  cout << ans/2 << endl;
  return 0;
}

まず、ソートして、同じ個数を数えます。そのあと、「同じもの以外 × 同じもの」を掛け算。「場合の数」的に、これでいけました。

解釈違いで、unique関数を用いてしまったため、21:20:59。うーん…。

結果と感想

はい、+11 で、ギリギリ下がりませんでした。よかった。

D 問題はまったく思いつかなかったので、飛ばしました。
E 問題は、あとちょっとで解けてました。悔しい…。

D 問題をすぐに思いつけるように頑張りたいですね…。

ギリギリ下がらなかったのがとにかくよかった...!

keyboard_arrow_up