クルトンのプログラミング教室

Pythonの使い方やPythonを使った競技プログラミングの解法などを解説しています。

非情報系が応用情報に合格する方法

こんにちは、クルトンです!2023年4月16日に実施された、応用情報に合格することができました!なので合格するまでにやった事をこの記事にまとめておこうと思います。 勉強を始める前の状態 どんな試験か 参考書 応用情報技術者合格教本 基本情報技術者合格…

BERTによるツイートのいいね数予測とLIMEによる判断根拠の可視化

この記事はでぶ Advent Calendar 2022 10日目の記事です。こんにちは、クルトンです!この記事ではデブさんのツイートを用いて、ツイート内容といいね数の相関について調べた結果を書いていこうと思います。 この記事を書くに至ったきっかけ TwitterAPIでツ…

p値を用いたTarget Encoding

こんにちは、クルトンです!この記事では二値分類問題でのp値を用いたTarget Encodingについて説明しようと思います。 p値とは 通常のTarget Encodingの欠点 p値を用いたTarget Encoding p値の計算と連続修正 実際に使用した結果 p値とは なる検定問題におい…

統計検定1級の勉強法(まとめノートの作り方)

こんにちは、クルトンです!以前に統計検定1級の勉強法について記事を出したのですが、そこで勉強法として「まとめノートを作る」というものを紹介しました。kuruton.hatenablog.comそこで、この記事ではまとめノートの作り方について詳しく説明しようと思い…

統計初学者が統計検定1級に合格する方法

こんにちは、クルトンです!2021年11月21日に実施された、統計検定1級(数理統計、応用統計(理工学))に合格することができました!なので、この記事では統計検定を受けるまでに勉強した内容について書こうとおもいます。 勉強を始める前の状態 どんな試験…

Optunaでヒューリスティックコンテストを解く

この記事は競プロ Advent Calendar 2021 14日目の記事です。こんにちは、クルトンです!この記事ではヒューリスティックコンテストにOptunaを活用する方法について解説しています。 Optunaとは 具体的な使い方 ヒューリスティックコンテストでOptunaを使う P…

atmaCup参戦記(#11)

こんにちは、クルトンです! この記事は僕が参加したatmaCup#11の参戦記になります。 この記事ではコンペ中に僕がどのようなことを考え、何をしていたのかということをメインに書こうと思っています。 なので、良いスコアが出る解法を知りたいという方にはツ…

Pythonで理解する蟻本「3-3 バブルソートの交換回数」(p.162)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-3 バブルソートの交換回数」(p.162) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 4 3 1 4 2 解答 # 入力 n = int(input()) a = list(map(i…

Pythonで理解する蟻本「3-3 BITの実装」(p.161)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-3 BITの実装」(p.161) のコードをPythonで書き直したものとなっています。 蟻本のコード classを使ったコード 蟻本のコード # [1, n] n = int(input()) bit = [0] * (n + 1) def…

Pythonで理解する蟻本「3-3 Crane(POJ 2991)」(p.156)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-3 Crane(POJ 2991)」(p.156) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 解答 入力 入力例1 2 1 10 5 1 90 入力例2 3 2 5 5 5 1 2 270 90 解答 …

Pythonで理解する蟻本「3-3 セグメント木によるRMQの実装」(p.155)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-3 セグメント木によるRMQの実装」(p.155) のコードをPythonで書き直したものとなっています。 コード コード import sys sys.setrecursionlimit(4100000) MAX_N = 1 << 17 INT_M…

Python版 AtCoder Library (Fenwick Tree)

この記事では、AtCoder Library (ACL)のfenwicktreeをPythonで書き直したものを公開しています。 Fenwick Tree 長さ の配列に対し、 要素の1点変更 区間の要素の総和 を で求めることが出来るデータ構造です。 Fenwick Tree コード コンストラクタ add sum …

Pythonで理解する蟻本「3-2 領域の個数」(p.150)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 領域の個数」(p.150) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 10 10 5 1 1 4 9 10 6 10 4 9 10 4 8 1 1 6 4 8 10 5 10 解答 from co…

Pythonで理解する蟻本「3-2 巨大ナップサック」(p.148)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 巨大ナップサック」(p.148) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 4 2 1 3 2 3 2 4 2 5 解答 from bisect import bisect_left INF…

Pythonで理解する蟻本「3-2 4 Values whose Sum is 0(POJ No.2785)」(p.147)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 4 Values whose Sum is 0(POJ No.2785)」(p.147) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 6 -45 -41 -36 -36 26 -32 22 -27 53 30…

AtCoder青色になりました!

こんにちは、クルトンです!昨日(2021/2/13)のコンテストで再び青色になることができました!そこでこの記事では青色になるまでにやったことを書いておこうと思います。 AtCoderを始めるまで AtCoderを始める 初めてのコンテスト 蟻本を買う 緑色で停滞す…

Pythonで理解する蟻本「3-2 Physics Experiment(POJ No.3684)」(p.145)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 Physics Experiment(POJ No.3684)」(p.145) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 解答 入力 入力例1 1 10 10 100 入力例2 2 10 10 100 …

Pythonで理解する蟻本「3-2 Fliptile(POJ No.3279)」(p.141)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 Fliptile(POJ No.3279)」(p.141) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 4 4 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 解答 # 隣接する…

Pythonで理解する蟻本「3-2 Face The Right Way(POJ No.3276)」(p.139)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 Face The Right Way(POJ No.3276)」(p.139) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 7 BBFBFBB 解答 MAX_N = 5000 # 入力 N = int…

Pythonで理解する蟻本「3-2 Jessica's Reading Problems(POJ No.3320)」(p.137)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 Jessica's Reading Problems(POJ No.3320)」(p.137) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 5 1 8 8 8 1 解答 # 入力 P = int(in…

Pythonで理解する蟻本「3-2 Subsequence(POJ No.3061)」(p.135)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-2 Subsequence(POJ No.3061)」(p.135) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 二分探索を用いた解答(O(n log n)) しゃくとり法を用いた解…

Pythonで理解する蟻本「3-1 平均最大化」(p.132)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-1 平均最大化」(p.132) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 3 2 2 2 5 3 2 1 解答 INF = 10 ** 6 + 1 # 入力 n, k = map(int,inpu…

Pythonで理解する蟻本「3-1 Aggressive cows(POJ No.2456)」(p.131)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-1 Aggressive cows(POJ No.2456)」(p.131) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 5 3 1 2 8 4 9 解答 INF = 10 ** 9 + 1 # 入力 N…

Pythonで理解する蟻本「3-1 Cable master(POJ No.1064)」(p.129)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-1 Cable master(POJ No.1064)」(p.129) のコードをPythonで書き直したものとなっています。 入力 入力例 解答 入力 入力例 4 11 8.02 7.43 4.57 5.39 解答 import math INF = …

Pythonで理解する蟻本「3-1 lower_bound」(p.128)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「3-1 lower_bound」(p.128) のコードをPythonで書き直したものとなっています。 入力 入力例 蟻本のコード bisect_leftを使ったコード 入力 入力例 5 3 2 3 3 5 6 蟻本のコード # …

Pythonで理解する蟻本「2-7 Millionaire(2008 APAC local onsites C)」(p.123)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「2-7 Millionaire(2008 APAC local onsites C)」(p.123) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 解答 入力 入力例1 1 500000 0.5 入力例2 3 60…

Pythonで理解する蟻本「2-7 Bribe the Prisoners(2009 Round 1C C)」(p.121)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「2-7 Bribe the Prisoners(2009 Round 1C C)」(p.121) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 解答 入力 入力例1 8 1 3 入力例2 20 3 3 6 14 …

Pythonで理解する蟻本「2-7 Crazy Rows(2009 Round2 A)」(p.119)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「2-7 Crazy Rows(2009 Round2 A)」(p.119) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 入力例3 解答 入力 入力例1 2 10 11 入力例2 3 001 100 010 …

Pythonで理解する蟻本「2-7 Minimum Scalar Product(2008 Round1A A)」(p.117)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「2-7 Minimum Scalar Product(2008 Round1A A)」(p.117) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 解答 入力 入力例1 3 1 3 -5 -2 4 1 入力例2 5…

Pythonで理解する蟻本「2-6 Carmichael Numbers(UVa No.10006)」(p.114)

この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の 「2-6 Carmichael Numbers(UVa No.10006)」(p.114) のコードをPythonで書き直したものとなっています。 入力 入力例1 入力例2 入力例3 2のべき乗の和として表す方法 再帰関数を使…