Python版のAtCoder Library(ACL)をAtCoderで使う方法
Python版のAtCoder Library(ACL)をAtCoderで使う方法

Python版のAtCoder Library(ACL)をAtCoderで使う方法

Aru

AtCoderのジャッジがPython版のac-library-pythonに対応していることに気づいたので、使い方をチェックしてみました。コピペを省略できるのでかなり楽です。

Contents
  1. はじめに
  2. 使い方
    • インポート方法
    • ライブラリの中身を確認
    • 実際に試してみる
  3. まとめ

はじめに

ac-library-pythonは、AtCoder Library(ACL)のPython版です。ACLはC++向けのライブラリで、AtCoderで使う基本アルゴリズムが網羅されています。

これを使うとC++と同じように、典型的なアルゴリズムをライブラリを読み込むだけで使うことができます。

AtCoderのジャッジ(Python/PyPy共に利用可能)環境にインストールされているので、importで読み込むだけでライブラリを利用できます。

PythonのACL: https://github.com/not522/ac-library-python

公式のACL(C++): https://github.com/atcoder/ac-library

使い方

インポート方法

以下のような形でインポートできます。

from atcoder import xxx ライブラリの中身を確認

AtCoderのコードテストで以下のコードを実行して、ライブラリの中身をチェックしてみました。Pythonの場合help関数などを使うことで、ライブラリをチェック可能です。

import atcoder help(atcoder)

実行結果から、ac-library-pythonがちゃんとインポートされていることが確認できます。ということで、Python版のACLを普通に呼び出すことができるようです。

実行結果 Help on package atcoder: NAME atcoder - # Python port of AtCoder Library. PACKAGE CONTENTS __main__ _bit _math _scc convolution dsu fenwicktree lazysegtree math maxflow mincostflow modint scc segtree string twosat VERSION 0.0.1 FILE /home/runner/.local/lib/python3.11/site-packages/atcoder/__init__.py 実際に試してみる

実際にAtCoder Library Practice Contestの問題で試してみます。使い方は本家に近いですが、Pythonならではの違いもあります。これについては使いながら覚えていく感じかと思います。

アルゴリズムを理解するのも兼ねて、コードを読むと良いと思います。また、C++ですが公式のドキュメントも参考になります。

A問題

DSUを使う問題です

from atcoder import dsu N, Q = map(int, input().split()) uf = dsu.DSU(N) for _ in range(Q): t, u, v = map(int, input().split()) if t == 0 : uf.merge(u, v) else : if uf.same(u, v): print("1") else: print("0") B問題

Fenwick Tree(BIT)を使う問題です

import atcoder.fenwicktree as ft N, Q = map(int, input().split()) bit = ft.FenwickTree(N) for i, v in enumerate(list(map(int, input().split()))): bit.add(i, v) for _ in range(Q): t, x, y = map(int, input().split()) if t == 0 : bit.add(x, y) else : print(bit.sum(x, y)) C問題

FloorSumを使う問題です

from atcoder import math T=int(input()) for _ in range(T): N,M,A,B=map(int,input().split()) print(math.floor_sum(N,M,A,B))

上記のような感じでACLのアルゴリズムを読み込み、使うことが可能です。他のアルゴリズムの使い方については、AtCoder Library Practice Contestの提出結果から検索すればある程度わかると思いますので他については省略します。

まとめ

AtCoder LibraryのPython版が、importするだけで使えるようになっているので紹介しました。これを使えば、コードをコピペせずに提出することが可能です。

コメントをキャンセル ABOUT ME ある/AruIT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)XContact専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
📎📎📎📎📎📎📎📎📎📎