競技プログラミングの鉄則

Table of Contents

https://atcoder.jp/contests/tessoku-book

A01. The First Problem

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_a

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_b

A03. Two Cards

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_c

A04. Binary Representation 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_d

A05. Three Cards

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_e

A06. How Many Guests?

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_f

A07. Event Attendance

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_g

A08. Two Dimensional Sum

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_h

A09. Winter in ALGO Kingdom

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_i

A10. Resort Hotel

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_j

A11. Binary Search 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_k

A12. Printer

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_l

A13. Close Pairs

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_m

A14. Four Boxes

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_n

A15. Compression

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_o

A16. Dungeon 1(※初版第 1 刷の B22 も同じ問題です)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_p

A17. Dungeon 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_q

A18. Subset Sum

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_r

A19. Knapsack 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_s

A20. LCS

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_t

A21. Block Game

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_u

A22. Sugoroku

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_v

A23. All Free

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_w

A24. LIS

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_x

A25. Number of Routes

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_y

A26. Prime Check

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_z

A27. Calculate GCD

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_aa

A28. Blackboard

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ab

A29. Power

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ac

A30. Combination

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ad

A31. Divisors

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ae

A32. Game 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_af

A33. Game 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ag

A34. Game 3

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ah

A35. Game 4

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ai

A36. Travel

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_aj

A37. Travel 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ak

A38. Black Company 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_al

A39. Interval Scheduling Problem

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_am

A40. Triangle

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_an

A41. Tile Coloring

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ao

A42. Soccer

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ap

A43. Travel 3

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_aq

A44. Change and Reverse

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ar

A45. Card Elimination

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_as

A46. Heuristic 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_at

A49. Heuristic 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_au

A50. 山型足し算

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_av

A51. Stack

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_aw

A52. Queue

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ax

A53. Priority Queue

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ay

A54. Map

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_az

A55. Set

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ba

A56. String Hash

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bb

A57. Doubling

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bc

A58. RMQ (Range Maximum Queries)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bd

A59. RSQ (Range Sum Queries)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_be

A60. Stock Price

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bf

A61. Adjacent Vertices

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bg

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bh

A63. Shortest Path 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bi

A64. Shortest Path 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bj

A65. Road to Promotion

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bk

A66. Connect Query

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bl

A67. MST (Minimum Spanning Tree)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bm

A68. Maximum Flow

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bn

A69. Bipartite Matching

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bo

A70. Lanterns

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bp

A71. Homework

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bq

A72. Tile Painting

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_br

A73. Marathon Route

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bs

A74. Board Game

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bt

A75. Examination

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bu

A76. River Crossing

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bv

A77. Yokan Party(★4)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bw

B01. A+B Problem

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ch

B02. Divisor Check

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ci

B03. Supermarket 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cj

B04. Binary Representation 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ck

B06. Lottery

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cl

B07. Convenience Store 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cm

B08. Counting Points

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cn

B09. Papers

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_co

B11. Binary Search 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cp

B12. Equation

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cq

B13. Supermarket 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cr

B14. Another Subset Sum

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cs

B16. Frog 1

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ct

B17. Frog 1 with Restoration

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cu

B18. Subset Sum with Restoration

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cv

B19. Knapsack 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cw

B20. Edit Distance

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cx

B21. Longest Subpalindrome

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cy

B23. Traveling Salesman Problem

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_cz

B24. Many Boxes

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_da

B26. Output Prime Numbers

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_db

B27. Calculate LCM

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dc

B28. Fibonacci Easy (mod 1000000007)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dd

B29. Power Hard

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_de

B30. Combination 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_df

B31. Divisors Hard

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dg

B32. Game 5

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dh

B33. Game 6

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_di

B34. Game 7

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dj

B36. Switching Lights

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dk

B37. Sum of Digits

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dl

B38. Heights of Grass

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dm

B39. Taro’s Job

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dn

B40. Divide by 100

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_do

B41. Reverse of Euclid

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dp

B42. Two Faced Cards

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dq

B43. Quiz Contest

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dr

B44. Grid Operations

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ds

B45. Blackboard 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dt

B51. Bracket

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_du

B52. Ball Simulation

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dv

B54. Counting Same Values

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dw

B55. Difference

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dx

B56. Palindrome Queries

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dy

B57. Calculator

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_dz

B58. Jumping

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ea

2026/1/19 segment tree の問題だとわかった状態で自力 AC

https://kenkoooo.com/atcoder/#/contest/show/76c42792-10db-491b-9486-ffc7f4f226e1?activeTab=Standings

$dp(i)$ を $i$ 番目の地点に到達するまでの最小ジャンプ回数とする。

\begin{align} dp(i) = \min_{X_j \in [X_i - R, X_i - L]} (dp(j)) + 1 \end{align}

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N, L, R;
    cin >> N >> L >> R;

    vll X(N);
    rep(i, N) cin >> X[i];

    auto op = [](ll a, ll b) -> ll {
        return min(a, b);
    };

    auto e = []() -> ll {
        return INF;
    };

    segtree<ll, op, e> seg(N);
    seg.set(0, 0);

    rep2(i, 1, N) {
        ll x = X[i];
        ll l = x - R;
        ll r = x - L;
        auto lit = lower_bound(all(X), l);
        auto rit = upper_bound(all(X), r);
        if (lit == rit) continue;
        ll mi = seg.prod(lit - X.begin(), rit - X.begin());
        seg.set(i, mi + 1);
    }

    cout << seg.get(N - 1) << endl;
}

B59. Number of Inversions

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_eb

B61. Influencer

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ec

B62. Print a Path

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ed

B63. 幅優先探索

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ee

B64. Shortest Path with Restoration

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ef

B65. Road to Promotion Hard

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_eg

B66. Typhoon

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_eh

B67. Max MST

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ei

B68. ALGO Express

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ej

B69. Black Company 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ek

C01. Tax Rate

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_di

C02. Two Balls

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fa

C03. Stock Queries

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fb

C04. Divisor Enumeration

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fc

C05. Lucky Numbers

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fd

C06. Regular Graph

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fe

C07. ALGO-MARKET

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ff

C08. ALGO4

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fg

C09. Taro’s Vacation

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fh

C10. A Long Grid

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fi

C11. Election

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fj

C12. Taro the Novel Writer

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fk

C13. Select 2

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fl

C14. Commute Route

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fm

C15. Many Meetings

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fn

C16. Flights

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fo

C17. Strange Data Structure?

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fp

C18. Pick Two(★6)

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fq

C19. Gasoline Optimization Problem

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fr

2026/2/17 segment tree の問題だとわかった状態で自力 AC

https://kenkoooo.com/atcoder/#/contest/show/76c42792-10db-491b-9486-ffc7f4f226e1?activeTab=Standings

$i-1$ から $i$ への移動で使ったガソリンはどの時点でガソリンスタンドで購入したガソリンかを考えると $i-K$ から $i-1$ までの区間にあるガソリンスタンドのうち、最も安いガソリンスタンドで購入したガソリンを使うのが最適であることがわかる。 また一つのガソリンスタンドで補充できるガソリンは $K$ まで使えるので、同じ位置にガソリンスタンドがある場合は最安値のところを使えばよい。 segment tree を使って、区間 $[i-K, i-1]$ にあるガソリンスタンドのうち最安値のガソリンを使って $i-1$ から $i$ への移動をすることを繰り返せば、最終的に $L$ に到達するまでの最小コストを求めることができる。

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N, L, K;
    cin >> N >> L >> K;
    L++;

    auto op = [](ll a, ll b) -> ll {
        return min(a, b);
    };
    auto e = []() -> ll {
        return INF;
    };

    segtree<ll, op, e> seg(L);
    seg.set(0, 0);

    rep(i, N) {
        ll a, c;
        cin >> a >> c;
        ll t = seg.get(a);
        seg.set(a, min(t, c));
    }

    vll cost(L, INF);
    cost[0] = 0;
    rep2(i, 1, L) {
        ll l = max(0ll, i - K);
        cost[i] = seg.prod(l, i);
    }

    ll ans;
    if (*max_element(all(cost)) == INF)
        ans = -1;
    else
        ans = accumulate(all(cost), 0ll);
    cout << ans << endl;
}

C20. Mayor’s Challenge

https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_fs