Discuss Scratch
- Discussion Forums
- » 日本語
- » Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
- osarusann-ukiki
-
Scratcher
4 posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
Last edited by osarusann-ukiki (April 20, 2021 11:31:00)
- 00giri
-
Scratcher
1000+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
Last edited by 00giri (June 16, 2022 02:59:35)
- watashida
-
Scratcher
500+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
robot simulation 実行時間制限: 30秒? (暫定) 少し難しい問題です
数直線上に N 個のロボットがいて、ゴールが座標 0 と座標 T にあります。
一番最初の状態(0秒後)には、i 番目のロボットは座標 Pi にあり向いている方向 Di は左(座標が減る方向)または右(座標が増える方向)です。
ここから 1 秒ごとに各ロボットは向いている方向に座標 1 進み、最終的にどちらかのゴールの座標にたどり着くことが目的です。
ただしある時刻で二つのロボットが同じ座標にあった場合、二つのロボットは衝突し、それぞれ現在の方向の逆を向きます。
各々のロボットが何秒後にゴールにたどり着くか求めてください。
制約
easy
1 ≦ N ≦ 50
1 ≦ T ≦ 150
1 ≦ P1 < P2 < P3 < … < PN ≦ T-1
Pi は偶数 (追加)
Di = 「左」 または 「右」
入力はD以外すべて整数
hard
1 ≦ N ≦ 50000
1 ≦ T ≦ 1000000000 = 10^9
1 ≦ P1 < P2 < P3 < … < PN ≦ T-1
Pi は偶数 (追加)
Di = 「左」 または 「右」
入力はD以外すべて整数
結果例
N = 3
T = 10
(P1, P2, P3) = (4, 6, 8)
(D1, D2, D3) = (右, 左, 左)
1 秒後
(P1, P2, P3) = (5, 5, 7) となり、1 番目と 2 番目のロボットが衝突するので、それぞれ「左」「右」に方向を変えます。
2秒後
(P1, P2, P3) = (4, 6, 6) となり、 2 番目と 3 番目のロボットが衝突するので、それぞれ「左」「右」に方向を変えます。
6秒後
(P1, P2, P3) = (0, 2, 10) となり、1 番目と 3 番目のロボットがゴールにつきます。
8秒後
(P1, P2, P3) = (-2, 0, 12) となり、 2 番目のロボットがゴールにつきます。
よって求める答えは (6, 8, 6) です。
入力生成器
数直線上に N 個のロボットがいて、ゴールが座標 0 と座標 T にあります。
一番最初の状態(0秒後)には、i 番目のロボットは座標 Pi にあり向いている方向 Di は左(座標が減る方向)または右(座標が増える方向)です。
ここから 1 秒ごとに各ロボットは向いている方向に座標 1 進み、最終的にどちらかのゴールの座標にたどり着くことが目的です。
ただしある時刻で二つのロボットが同じ座標にあった場合、二つのロボットは衝突し、それぞれ現在の方向の逆を向きます。
各々のロボットが何秒後にゴールにたどり着くか求めてください。
制約
easy
1 ≦ N ≦ 50
1 ≦ T ≦ 150
1 ≦ P1 < P2 < P3 < … < PN ≦ T-1
Pi は偶数 (追加)
Di = 「左」 または 「右」
入力はD以外すべて整数
hard
1 ≦ N ≦ 50000
1 ≦ T ≦ 1000000000 = 10^9
1 ≦ P1 < P2 < P3 < … < PN ≦ T-1
Pi は偶数 (追加)
Di = 「左」 または 「右」
入力はD以外すべて整数
結果例
N = 3
T = 10
(P1, P2, P3) = (4, 6, 8)
(D1, D2, D3) = (右, 左, 左)
1 秒後
(P1, P2, P3) = (5, 5, 7) となり、1 番目と 2 番目のロボットが衝突するので、それぞれ「左」「右」に方向を変えます。
2秒後
(P1, P2, P3) = (4, 6, 6) となり、 2 番目と 3 番目のロボットが衝突するので、それぞれ「左」「右」に方向を変えます。
6秒後
(P1, P2, P3) = (0, 2, 10) となり、1 番目と 3 番目のロボットがゴールにつきます。
8秒後
(P1, P2, P3) = (-2, 0, 12) となり、 2 番目のロボットがゴールにつきます。
よって求める答えは (6, 8, 6) です。
入力生成器
Last edited by watashida (April 21, 2021 10:18:41)
- NT_ZZzz
-
Scratcher
100+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
ナベアツアツ数 実行時間制限: 10秒 この問題は、多分割と難しいです
10進法自然数のうち 33の倍数である または 数字を文字列として見たときに“33”を含む 数を「ナベアツアツ数」とします
Nが何番目に小さいナベアツアツ数か求めてください
制約
この問題は2つの難易度に分かれています
EASY
1 ≦ N ≦ 1000
HARD
1 ≦ N ≦ 1000000000000000 (=10^15)
Nは正整数である
出力
Nが ナベアツアツ数 で無ければ -1
Nが a番目のナベアツアツ数 であれば a を出力してください
結果例
N=33 のとき 1
N=99 のとき 3
N=133 のとき 5
ナベアツアツ数は小さい順に 33,66,99,132,133,165…となります
N=135 のとき -1
135はナベアツアツ数ではありません
N=33150 のとき 2021
N=998244335 のとき 99739521
N=999999999999990 のとき 148261732462721
解説はこちら
10進法自然数のうち 33の倍数である または 数字を文字列として見たときに“33”を含む 数を「ナベアツアツ数」とします
Nが何番目に小さいナベアツアツ数か求めてください
制約
この問題は2つの難易度に分かれています
EASY
1 ≦ N ≦ 1000
HARD
1 ≦ N ≦ 1000000000000000 (=10^15)
Nは正整数である
出力
Nが ナベアツアツ数 で無ければ -1
Nが a番目のナベアツアツ数 であれば a を出力してください
結果例
N=33 のとき 1
N=99 のとき 3
N=133 のとき 5
ナベアツアツ数は小さい順に 33,66,99,132,133,165…となります
N=135 のとき -1
135はナベアツアツ数ではありません
N=33150 のとき 2021
N=998244335 のとき 99739521
N=999999999999990 のとき 148261732462721
解説はこちら
Last edited by NT_ZZzz (July 11, 2021 14:11:19)
- 00giri
-
Scratcher
1000+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#87 Easyへの回答です。
https://scratch.mit.edu/projects/705797770/
https://scratch.mit.edu/projects/705797770/
Last edited by 00giri (June 16, 2022 02:55:58)
- 00giri
-
Scratcher
1000+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#85への回答です()Easy&Hard。
https://scratch.mit.edu/projects/705798123/
https://scratch.mit.edu/projects/705798123/
Last edited by 00giri (June 16, 2022 02:57:52)
- watashida
-
Scratcher
500+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#85への回答です()Easy&Hard。残念ながら、不正解です
https://scratch.mit.edu/projects/518795682/
N = 3、T = 15で
P = (4, 8, 14)
D = ( 右, 右, 左)
の時
ans = (14, 17, 7)
と出力されますが、正確には
ans = (14, 11, 7)
です
また、hardの時には実行時間を超えてしまいます
もう少し頑張ってみてください
- Yuulis
-
Scratcher
56 posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#80に回答させていただきます。WAです…
https://scratch.mit.edu/projects/518297297/
roundのところをもう一度見直してみてください。三角関数は使わなくても解けます。
- watashida
-
Scratcher
500+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#94
easyはACだと思います
hardも挑戦してみてください
easyはACだと思います
hardも挑戦してみてください
- Yuulis
-
Scratcher
56 posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
問題略質問ですが、ゴールにすでに達しているロボットと別のロボットが同じ座標に来た時も左右反転するんですよね?
- NT_ZZzz
-
Scratcher
100+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
#85 robot simulation に解答します
https://scratch.mit.edu/projects/519037233/
https://scratch.mit.edu/projects/519037233/
- watashida
-
Scratcher
500+ posts
Scratchで競技プログラミング!(初めての人は最初の投稿をお読みください)
質問ですが、ゴールにすでに達しているロボットと別のロボットが同じ座標に来た時も左右反転するんですよね?実はそのようなことは発生しません
easyに回答です。 https://scratch.mit.edu/projects/518978350/P = (2,4,8)
hardはN ≦ 50000の壁が…
D = (右,左,左)
のとき
(4,8,8)ですが(8,4,8)と出力されます
#85 robot simulation に解答しますeasy,hardともにACです!
https://scratch.mit.edu/projects/519037233/
hardのFAおめでとうございます
https://scratch.mit.edu/projects/518904967/ACです!
#85に解答させていただきます。
Last edited by watashida (April 21, 2021 22:53:26)





