トヨタシステムズプログラミングコンテスト2025(AtCoder Beginner Contest 431) コンテストまとめ
コンテスト情報

コンテスト時間: 2025-11-08(土) 21:00 ~ 2025-11-08(土) 22:40 (100 分)
前半の問題が「高橋君とロボット」シリーズで統一されている。
A 問題
- Difficulty: 10 / NoviSteps: 9Q / 解答時間: 1:26
問題概要
頭パーツと体パーツを 個ずつ組み合わせてロボットを 体作ることができる。 しかし、ロボットは頭パーツの重さが体パーツの重さより大きいと倒れてしまう。
高橋くんが持っている頭パーツの重さは グラム、体パーツの重さは グラムである。 ロボットが倒れないようにするためには、体パーツをあと何グラム重くする必要があるか求めよ。
解答方針
- を出力する。
if文で書いてもよい。
B 問題
- Difficulty: 36 / NoviSteps: 6Q / 解答時間: 3:37
問題概要
あるロボットがあり、はじめの重さは である。
このロボットには、同時に取り付けられる部品が 種類あり、種類 の部品の重さは である。 はじめ、ロボットにはどの部品もついていない。
次の 個のクエリを順に処理せよ。 番目のクエリは以下の通り。
- 現在、ロボットに種類 の部品がついていない場合は取り付け、ついている場合は取り外す。その後、現在のロボットの重さを出力する。
解答方針
-ロボットに種類 の部品が付いているかどうかをフラグ配列で管理し、クエリごとにフラグの更新と部品の重さを加減算して出力すればよい。
C 問題
- Difficulty: 172 / NoviSteps: 3Q / 解答時間: 6:44
問題概要
高橋くんは、頭パーツを 個と体パーツを 個組み合わせてロボットを 体作ることができる。 しかし、ロボットは頭パーツの重さが体パーツの重さより大きいと倒れてしまう。
現在、高橋くんは頭パーツを 個と体パーツを 個持っています。 高橋くんが持っている 番目の頭パーツの重さは グラム、 番目の体パーツの重さは グラムである。
高橋くんは、持っているパーツを適切に組み合わせることで、倒れないロボットを合計 体作りたい。 これが達成可能か判定せよ。
解答方針
- 頭のパーツは軽い方から、体のパーツは重い方から個を選び、その中から軽い順に貪欲に組み合わせていく。
- これで 個のロボットを作ることができるのならば、答えは
Yes、そうでなければNoである。
D 問題
- Difficulty: 693 / NoviSteps: 2Q / 解答時間: 29:56
問題概要
頭と体からなるロボットがあり、同時に取り付けられる部品が 種類ある。 種類 の部品の重さは で、それぞれの部品には、頭に取り付けたときと体に取り付けたときで異なる嬉しさがある。 種類 の部品を頭に取り付けたときの嬉しさは 、体に取り付けたときの嬉しさは である。
ただし、ロボットは頭の重さが体の重さより大きいと倒れてしまう。
種類の部品をすべて 個ずつロボットに取り付けたい。 ロボットを倒さないように部品を取り付けたときの、すべての部品の嬉しさの合計としてありえる最大値を求めよ。
解答方針
- とりあえず、全ての部品を体に取り付けるとして、そこから頭に取り付けるものを選ぶことを考える。このとき、嬉しさの変化量は となる。
- ここで、重さ , 価値が の品物があるとして、部品の重さの総和 を とする。
- このとき、重さの合計が 以下という制約付きナップザック問題に帰着できる。
成績

- 順位: 2329th / 10332
- Performance: 1068
- Rating: 1220 → 1206 (-14)
D 問題に時間をかけ過ぎなのと、E 問題をもう少し頑張りたかった。





