/doer_kyopuro_training-camp

Doer競プロ合宿資料

Primary LanguageC++

Doer競プロ合宿9/3(土)

事前準備

スケジュール

時間 内容 補足
14:00~14:20 競プロとは?(LT)
14:30~15:20 Python文法基礎講座
15:30~21:00 過去問演習 cozy_sauna&くまがメンター相談部屋に待機
21:00~22:40 コンテスト参加 AtCoder
22:40~23:30 コンテストの感想戦・問題解説

競プロとは?

  • プログラミングで解答するクイズ大会!
  • 問題を解くまでの流れ
    • 問題を確認し解法を考える
    • コードを書く
    • 問題例を試して、正解するか確認する
    • コードを提出してACになると正解!

Python文法基礎講座

入力受け取り
関数 内容
input() 入力を受け取る
split() 入力を空白区切りにする
int() 文字列型を数字に変える
map() 複数の要素に同じ関数を使う
文字列で受け取る
S = input()
文字列で受け取る→数値に変換する
S = int(input())
文字列で受け取る→空白で区切る
A, B = input().split()
文字列で受け取る→空白で区切る→全てを数値に変換する
A, B = map(int, input().split())
文字列で受け取る→空白で区切る→全てを数値に変換する→リストにする
A = list(map(int, input().split()))
文字列で受け取る→空白で区切る→全てを数値に変換する→リストにする→二次元配列
A = [list(map(int, input().split())) for _ in range(3)]
Python型一覧
内容
str 文字列型 a = "ABC"
int 整数型 a = 1
float 浮動小数点型 a = 1.23
bool ブール型 a = True; b = False
list リスト型 a = [1, 2, 3]
set セット型 a = {1, 2, 3}
tuple タプル型 a = (1, 2, 3)
dict 辞書型 a = {"apple": 1, "banana": 2}; a["apple"] -> 1
Python関数一覧
関数 内容
max() 最大値を取得 max(1, 4, 2) -> 4
min() 最小値を取得 min(1, 4, 2) -> 1
sun() 全ての要素の和を取得 sum([1, 4, 2]) -> 7
abs() 絶対値を取得 abs(-2) -> 2
sorted() 小さい順にソートする sorted([1, 4, 2) -> [1, 2, 4]
print() 表示する print('apple') -> 'apple'
reversed() 逆順にする reversed([1, 4, 2]) -> [2, 4, 1]
join() 文字列を結合する ''.join(['a', 'b', 'c']) -> "abc"
list() リスト [1, 3, 4, 1]重複あり
append() リストに要素を入れる A = []; A.append(1) -> A = [1]
set() セットを生成 {1, 3, 4}重複なし
add() セットに要素を入れる A = {}; A.add(1) -> A = {1}
len() リスト、セットの長さを取得 len([1, 2, 3]) -> 3
dict() 辞書を生成 {"apple": 2, "banana": 1} {key: value}
range() 数字のリスト(みたいなもの)を生成 range(4) -> [0, 1, 2, 3]
ord() 文字のUnicode値を取得 ord('a') -> 97
chr() Unicode値から文字を取得取得 chr(97) -> 'a'
exit() プログラムを終了する
type() 型を表示する type(1) -> int, type("apple") -> str
Python頻出処理
処理 内容
+ 足し算 4 + 3 -> 7
- 引き算 4 - 3 -> -1
* 掛け算 4 * 3 -> 12
/ 割り算 4 / 3 -> 1.33
// 割り算**(切り下げ)** 4 // 3 -> 1
% あまり 4 % 3 -> 1
x+=1 1をxに足す x = 3, x += 1 -> 4
x-=1 1をxから引く x = 3, x -= 1 -> 2
A[s] 配列の前からs番目を取得 [1, 7, 4, 5, 9][1] -> 7
A[-s] 配列の後ろからs番目を取得 [1, 7, 4, 5, 9][-1] -> 9
A[s:g] Aはlist、s文字目からt文字目を取得 [1, 7, 4, 5, 9][1:3] -> [7, 4]
[要素] * N N個同じ要素が入ったlistを作る [0] * 3 -> [0, 0, 0]
[[要素] * W for _ in range(H)] H*Wの二次元配列を作る [[0] * 3 for _ in range(2)] -> [[0, 0, 0],[0,0,0]]
True, False bool値(大文字注意) True, False
and 2つの条件を満たす if(条件1)and(条件2):
or 2つの条件のどちらか満たす if(条件1)or(条件2):
if elif else if文, elifに注意 if(条件1)elif(条件2)else:
in listやsetに要素が含まれるか 2 in [1, 2, 3] -> True
forループ
for number in range(3):
    print(number)

#出力
0
1
2
for alp in "abc":
    print(alp)

#出力
'a'
'b'
'c'
Python実行コマンド a.py という名前のファイルを実行(コマンドライン上で)
python3 a.py

入力受付モードになるので、入力例を試す

過去問演習

EASY 🔥
問題番号 問題リンク 解説 解説
180_a 問題 Python C++
178_a 問題 Python C++
176_a 問題 Python C++
174_a 問題 Python C++
172_a 問題 Python C++
170_a 問題 Python C++
053_a 問題 Python C++
101_a 問題 Python C++
207_a 問題 Python C++
201_a 問題 Python C++
266_a 問題 Python C++
264_a 問題 Python C++
218_a 問題 Python C++
179_a 問題 Python C++
214_b 問題 Python C++
222_b 問題 Python C++
204_b 問題 Python C++
052_a 問題 Python C++
151_a 問題 Python C++
205_a 問題 Python C++
NORMAL 🔥🔥
問題番号 問題リンク 解説 解説
187_a 問題 Python C++
261_a 問題 Python C++
219_b 問題 Python C++
213_b 問題 Python C++
201_b 問題 Python C++
218_b 問題 Python C++
101_b 問題 Python C++
086_b 問題 Python C++
062_b 問題 Python C++
049_b 問題 Python C++
047_b 問題 Python C++
089_b 問題 Python C++
HARD 🔥🔥🔥
問題番号 問題リンク 解説 解説
182_b 問題 Python C++
050_b 問題 Python C++
098_b 問題 Python C++
102_b 問題 Python C++
261_b 問題 Python C++
265_b 問題 Python C++
262_b 問題 Python C++
EXPERT 🔥🔥🔥🔥🔥
問題番号 問題リンク 解説 解説
043_c 問題 Python C++
060_c 問題 Python C++
048_b 問題 Python C++
109_c 問題 Python C++
118_c 問題 Python C++
103_c 問題 Python C++
240_c 問題 Python C++
117_c 問題 Python C++
101_c 問題 Python C++
061_c 問題 Python C++
106_c 問題 Python C++
066_c 問題 Python C++
064_c 問題 Python C++

ABC(AtCoder Begginer Contest)に参加してみよう!

コンテストの感想戦・問題解説

  • 実際に問題を解きながら解説します!
  • 分からない時はいつでも質問してください!

nextステップ

おすすめアルゴリズム一覧
アルゴリズム
貪欲法
累積和
二分探索
dp(動的計画法)
素数判定
約数列挙
BFS(幅優先探索)
DFS(深さ優先探索)
UnionFind
尺取法