2022-03-01から1ヶ月間の記事一覧

動的計画法ってなに?

1次元における動的計画法

等差数列と等比数列

数列の単元です。

集合

論理数学の単元です

Union-Find (グループ分け)

Q5-1. Union-Find

再帰

Q4-1. 1 + 2 + … + N (再帰) Q4-2. A + (A+1) + … + B (再帰) Q4-3. フィボナッチ数列 (再帰-1) Q4-4. フィボナッチ数列 (再帰-2) Q4-5. 部分和問題 (再帰-1) Q4-6. 部分和問題 (再帰-2)

二次元配列など

二次元配列など Q2. SNS クエリ Q3. 二次元地図 Q4. 二次元地図クエリ Q5. ライツアウト (1) Q6. ライツアウト (2)

シグマ計算とパイ計算

for文とシグマ計算 (1) for 文とシグマ計算 (2) for 文とシグマ計算 (3) for 文とシグマ計算 (4) for 文と Π 計算

可変長配列

Q1. N 個の値を受け取る Q2. 末尾挿入クエリ Q3. スタック Q4. 挿入、削除、検索 Q5. ままこだて Q6. 反転 Q7. 先頭への挿入 Q8. 両端への挿入

配列とクエリ

Q1. 8 番目の値は? Q2. k 番目の値は? Q3. 配列クエリ

二分探索

Q2-1. 方程式を解く Q2-2. 貯金 (1) Q2-3. 最小の添字 Q2-4. 小さい数の個数 Q2-5. 和が K 以上のペア Q2-6. 重さは何番目? Q2-7. 貯金 (2)

貪欲法

Q1-1. 1 円玉と 5 円玉 Q1-2. お菓子 (1) Q1-3. コイン問題 Q1-4. 荷物と箱 Q1-5. お菓子 (2)

管理データを工夫するクエリ処理

I - 行列操作 O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N = int(input()) Q = int(input()) row_num = list(range(0, N)) col_num = list(range(0, N)) …

グラフに対するクエリ処理

K - 巨大企業 O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce sys.setrecursionlimit(1000000) # main def main(): N = int(input()) R = -1 edges = [] for i in range(N): edges…

データ構造を用いたクエリ処理

G - ストリング・クエリ O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce from string import ascii_lowercase # main def main(): Q = int(input()) que = deque() for q in range…

多次元の動的計画法

H - Grid 1 O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): H, W = list(map(int, input().split())) G = [] for _ in range(H): S = str(input()) G.append(S…

数え上げ問題

C - Typical Stairs O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): MOD = 10**9+7 N, M = list(map(int, input().split())) ok = [False] * (N+1) dp = [0] *…

プリム法

F - 最小全域木問題 O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N, M = list(map(int, input().split())) G = [] for _ in range(N): G.append([]) for _ …

ワーシャル・フロイド法

E - 全点対最短経路問題 O(N3) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): INF = 10**18 N, M = list(map(int, input().split())) dist = [] for i in range(N)…

ダイクストラ

C - Cat Snuke and a Voyage O(N) heapqを使用し、ダイクストラに対応。 from asyncio import QueueFull import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N, M = lis…

幅優先探索

C - Cat Snuke and a Voyage O(N) from asyncio import QueueFull import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N, M = list(map(int, input().split())) G = [] …

二分探索の練習問題

A - 二分探索の練習問題 O(logN) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N, K = list(map(int, input().split())) A = list(map(int, input().split())) l …

任意の基準でソートして貪欲

C - Different Strokes O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N = int(input()) BA = [] for i in range(N): a, b = list(map(int, input().split())…

B - 区間スケジューリング問題

B - 区間スケジューリング問題 O(N) import sys import math import heapq import itertools from collections import deque from functools import reduce # main def main(): N = int(input()) BA = [] for i in range(N): a, b = list(map(int, input().s…