0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

緑によるABC393振り返り

Last updated at Posted at 2025-02-16

はじめに

ユーザ名 hidehico
コンテスト名 AtCoder Beginner Contest 393
順位 4033rd / 12397 (top 32.53%)
パフォーマンス 840
レーティング 943 → 933 (-10)

すげー微妙だなー(最大公約数にやられたやつ(僕)に言われたくないなー)
えーはい、Dで躓き、Eにまともに当りにいったためです、Fに行けばよかったなー(タラレバ)
ABCD4完、3ペナでした

コンテスト中どうだったか

開始3秒

acc newを実行する

開始2分

なんか時間かかったけど、Aを通す

開始4分

こっちも時間かけたけど、Bを通す

開始7分

diff逆転かと思いきや、全然簡単で、Cを通す

開始44分

3ペナ食って、Dを通す

開始45分

Eが最大公約数、Fは、セグ木か、dp、それともセグ木dp、どうしよう
Fは難しそうだったので、Eを解きにいく

開始1時間40分

そのまま時間が過ぎ去り、コンテスト終了
泣きそうになりました

使っているライブラリ

最近は、余り追加してません

そんじゃ一問ずつ感想書きますか

A問題

簡単だったけど、時間がかかった

ACコード(ライブラリ抜粋)

a, b = sl()

if "fine" == a and "sick" == b:
    print(3)
elif "sick" == a and "fine" == b:
    print(2)
elif "sick" == a and "sick" == b:
    print(1)
else:
    print(4)

B問題

三重ループのB問題って出るんだ

ACコード(ライブラリ抜粋)

S = s()
ans = 0

for a in range(len(S) - 2):
    for b in range(a + 1, len(S) - 1):
        for c in range(b + 1, len(S)):
            if b - a == c - b and S[a] == "A" and S[b] == "B" and S[c] == "C":
                ans += 1

print(ans)

C問題

一見難しそうだけど、グラフ用語を覚えとけば、問題なかった
あとset使わないとACできない(コーナケースがいくつも考えられる)

ACコード(ライブラリ抜粋)

N, M = il()
L = [set() for _ in [0] * N]

ans = 0

for u, v in li(M, il, -1):
    if u == v:
        ans += 1
        continue

    if v in L[u] or u in L[v]:
        ans += 1
        continue

    L[u].add(v)
    L[v].add(u)

print(ans)

D問題

累積和と和の公式使って、解いた
言語化するのが難しいけど、マスを固定して、各マスの答えの最小値を、高速に求めればいいと思い累積和を使った

ACコード(ライブラリ抜粋)

N = ii()
S = s()

AC = [0]
BC = [0]
L = []

for i in range(N):
    if S[i] == "1":
        AC.append(AC[-1] + i)
        BC.append(BC[-1] + 1)
        L.append(i)
    else:
        AC.append(AC[-1])
        BC.append(BC[-1])

ans = INF

for i in L:
    acos = ((i * BC[i]) - AC[i]) - simple_sigma(BC[i])
    bcos = ((AC[N] - AC[i + 1]) - (i * (BC[N] - BC[i + 1]))) - simple_sigma(
        BC[N] - BC[i + 1]
    )

    ans = min(ans, acos + bcos)

print(ans)

E問題

そもそも、どうやるかが分からなかった
検索して、いろいろ考えたけど無理だった

F問題

DPかセグ木だと思ったけど、残り2分で、TLEするDP解を思いついたが高速化するまで至らなかった

最後に

もっと精進しなきゃなーと実感しました(逃げずに、数学系問題考察するとか)

以上です

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?