ABC326

総評

A、Bのみ解けた

2UP3DOWN

これは問題の通りに分岐させれば良いだけ

x, y = map(int, input().split())

a = abs(x - y)

if x < y:
    if a > 2:
        print('No')
    else:
        print('Yes')
else:
    if a > 3:
        print('No')
    else:
        print('Yes')

326-like Numbers

全探索する。具体的には、Nから初めて919までを試してみれば良い。各桁ごとの数値に分割する方法は色々あると思う。

N = int(input())

for i in range(N, 920):
    first = i // 100
    second = (i // 10) % 10
    third = i % 10

    if first * second == third:
        print(i)
        break

Peak

解けず。累積和な気がしたが、どうも違うようだ。

コンテスト中の考察

  1. 配列countを作成する。これは座標を擬似的に模したもの。つまり、count[0] ~ count[max(A)]の配列をとる。この配列は全ての要素を0で初期化する。 入力配列Aを読み込み、count[Ai]の値をインクリメントする。 こうすることで、どの座標にいくつプレゼントがあるかが記録される。
  2. 上記のcount配列に対して累積和の配列を作成する。これはPythonであればitertools.accumlateで作成できる。
  3. 累積和配列に対して区間ごとのmaxを調べていく
from itertools import accumulate

n, m = map(int, input().split())
a = list(map(int, input().split()))

maxi = max(a)
l = [0] * (maxi + 1)

for i in a:
    l[i] += 1

acc = [i for i in accumulate(l)]

ans = 0
for i in range(maxi - m):
    ans = max(ans, acc[i+m]-acc[i])

print(ans)

上記ではダメな理由

単純に、Aiの取り得る最大値が10 ^ 9のため、count配列作成時にO(10 ^ 9)の計算量となるため、TLEになる。 与えられた制約からすると、O(N)くらいじゃないと厳しい。

解説ACをする

尺取り法というものを利用すると良いらしい

n,m = map(int,input().split())
a = list(map(int,input().split()))

a.sort()
a.append(9000000000000)

res = 0
r = 0
for l in range(0,n):
    while a[r] < a[l]+m:
        r += 1
    res = max(res,r-l)

print(res)

jenvで設定してもjava --versionが意図したものにならない

解決策

PATHの設定を見直し、./.jenv/shimsが先に読み込まれるようにする。具体的には以下のようにする。

# setting PATH.
typeset -U path PATH
path=(
  $HOME/.jenv/shims # 先に読み込ませる
  /opt/homebrew/bin(N-/)
  /opt/homebrew/sbin(N-/)

原因など

私の環境に2箇所にjavaコマンドが混在していたことが原因。

/usr/bin/java
$HOME/.jenv/shims/java

jenvが起動するjavaコマンドは.jenvディレクトリ配下にあるものを利用するのが正しいにも関わらず、/usr/bin/javaを使用していたことが原因だった

TCPとUDP

プロトコル 接続 信頼性 速度 用途
TCP 有り 高い UDPより遅いことがある。(再送や順序の確認によるオーバーヘッド) データ整合性・信頼性が要求されるアプリケーションに使用される。(Webブラウジング・ファイル転送・電子メールなど)
UDP 無し 低い 上記のオーバーヘッドがないため、通常はTCPより高速 データ転送速度・リアルタイム性が優先されるアプリケーションに使用される(VoIP・ビデオストリーミング・オンラインゲームなど)

tfenv installが失敗する

この記事は

tfenv install 0.13.5が失敗した場合の対処方法メモ。

筆者はM1Macを使用しています。

対処方法

M1 Macでtfenvを使うと特定のVersionのTerraformのダウンロードに失敗するに記載の通りです。直接バイナリをダウンロードして、該当のディレクトリに配置します。

手順

以下、パスは使用しているバージョン管理ツールによって異なりますので、あくまで私のやった手順です。

必要なバイナリが含まれるzipをダウンロード

私の場合は0.13.5が必要だったので、こちらから[terraform_0.13.5_darwin_amd64.zip]をダウンロードしました。

移動して解凍

ブラウザからダウンロードしたzipは~/Downloadsに保存されているので、対象のディレクトリに移動します。

$ mv ~/Downloads/terraform_0.13.5_darwin_amd64.zip /opt/homebrew/Cellar/tfenv/3.0.0/versions/0.13.5
$ cd /opt/homebrew/Cellar/tfenv/3.0.0/versions/0.13.5
$ unzip terraform_0.13.5_darwin_amd64.zip
Archive:  terraform_0.13.5_darwin_amd64.zip
  inflating: terraform

tfenv use

上記までの手順ができれば、tfenv useでダウンロードしたバージョンのterraformが利用できるようになります。

以上。