1. 競プロする人
  2. ユニークビジョンプログラミン..
2024-09-23 14:50

ユニークビジョンプログラミングコンテスト2023 クリスマス (AtCoder Beginner Contest 334)

ユニークビジョンプログラミングコンテスト2023 クリスマス (AtCoder Beginner Contest 334)https://atcoder.jp/contests/abc334↓の提出コードを見ながらの聴取を推奨いたしますA:https://atcoder.jp/contests/abc334/submissions/51482543B(解説模写AC):https://atcoder.jp/contests/abc334/submissions/51482679Atcoderホームページ:https://atcoder.jp/home2・5・11・17・23日更新予定#競技プログラミング #Python #podcast

BGMタイトル: Doghouse 作者: Blue Dot Sessions 楽曲リンク: https://freemusicarchive.org/music/Blue_Dot_Sessions/Warmbody/Doghouse/ ライセンス: CC BY-SA 4.0

サマリー

ユニークビジョンプログラミングコンテスト2023クリスマスでは、高橋さんがサンタからのプレゼント選びを含む様々なプログラム問題に挑戦しています。特にB問題では、クリスマスツリーを特定の座標に立てる方法と、その数量を求めるアルゴリズムについて語られています。

クリスマスプレゼントの選択
ユニークビジョンプログラミングコンテスト2023 クリスマス
AtCoder Beginner Contest 334 A問題 クリスマスプレゼント
問題文。野球少年の高橋くんは今年とてもいい子にしていたので、サンタさんはバットかグローブのうち値段が高い方を高橋くんにプレゼントすることにしました。
バットの値段がB円、グローブの値段がG円、BとGはイコールではありません。 の時、サンタさんが高橋くんにプレゼントするのはどちらですか。
バットであるときBAT、グローブであるときGLOVEを出力せよ。ということで、
BとGイコール
マップイントインプット
ドットスプリット プリント
BATか、BAT
IF Bダイナリジー
ELSE GLOVE
LOVEでしたね。
これでいいはず。提出していきます。 ACしたのでB問題いきます。
クリスマスツリーの立て方
B問題 クリスマス・トリーズ
問題文 東西に無限に伸びる道路があり、この道路上のある基準となる地点から東にXメートルのところにある地点の座標はXと定められています。
特に基準となる地点から西にXメートルのところにある地点の座標はマイナスXです。
ちょっと何言ってるかわかんないけど一回続きを見ます。
園池くんは今から座標がAである地点を起点にしてMメートルおきにクリスマスツリーを立てます。
すなわち座標がある整数Kを用いてAプラスKMと表されるような地点それぞれにクリスマスツリーを立てます。
高橋くんと青木くんはそれぞれ座標がLR、L小なりイコールRである地点に立っています。
高橋くんと青木くんの間、高橋くんと青木くんが立っている地点を含むに立てられるクリスマスツリーの本数を求めてください。
Xメートル、東は正のプラスで西はマイナスってことですね、X座標か。
座標がAである地点を起点にしてMメートルおきにクリスマスツリーを立てます。
座標がAである地点を起点にして、高橋くんと青木くんがそれぞれ端から端、
ある地点からある地点、AMLRが与えられます。入力例1は5、3、マイナス1、6、出力例は3。
すぬけくんは座標がマイナス4、マイナス1、2、5、8、11、14である地点にクリスマスツリーを立てます。
これらのうち、高橋くんと青木くんの間にあるのは座標がマイナス1、2、5である地点に立てられる3本です。
えーと、制約がマイナス10の18乗から10の18乗までなので、
4分は絶対無理だね。 青木くんマイナス高橋くん
割る 得られる本数とかそういうことかな。
とりあえずAMLRを受け取って
AMLR
でアンスイコール0を入れて
Aから始める 5から始めます。3本間隔、3メートル間隔で植えていきます。
西の限界はマイナス1、東の限界は6。 5÷3、5÷3じゃないな。
7
LとRを 足して
距離的にはマイナス1から6なので 7?マイナス1からだから8か。
マイナス1、0、1、2、3、4、5、6、8距離があって 3メートル間隔で植えますっていうのを
割ったら 3本入らなくない?差算が急だから。
マイナス1、2、5。 マイナス1、0、1、2、3、4、5、6。
すぬけくんは座標がマイナス4、マイナス1、2、5、8、11、14、3個ずつ
3個差である地点にクリスマスツリーを立てます。
左に吹っ切れるパターンと右に吹っ切れるパターンで数えるっていう方法もあるにはある
かな? 入力量3がめちゃくちゃでかい数字なんで多分これで詰まりそうだけどな。
A、M。 1回愚直にやってみますか。
フォーアインレンジ。
どうしようかな。 Oというよりは
ファイルかな? ファイル。
小文字Aは Aのコピーを入れておきましょう。
ファイル小文字Aが
L以上だったら
アンスプラスイコール1
AマイナスイコールM。 同じのをファイル
Aを一旦リセットしないといけないから
AイコールラージーA。 ファイルスモールA小なりイコール
R。 アンスプラスイコール1
AプラスイコールM。 でプリント
アンスマイナス1。 3。
入力例2は0。 1? 1?
大なりイコール小なりイコールじゃなくて大なり小なりかな? 1。
関係ないな。 解説を見ます。
B問題 まずは問題を単純化するためLとRからAを引き
クリスマスツリーは座標がMの倍数である各地点に立っているものとします。
座標がKMである地点に立っているクリスマスツリーの番号をKとします。
座標がL未満の地点にあるクリスマスツリーのうち一番東にあるものの番号
および座標がR以下の地点にあるクリスマスツリーのうち一番東にあるものの番号をそれぞれ
small l small r とすると答えはsmall r マイナスsmall l になります。
あとはあるXに対して座標がX以下の地点にあるクリスマスツリーのうち一番東にあるものの番号が求められれば良いですが
これはM分のXという簡単な式で表されます。
Xが負の数であるときのM分のXの求め方は使用するプログラミング言語の使用によって異なるため注意してください。
またM分のXを不動小数点数を用いて実数として計算した上でフロアを取るという方針は
用いる不動小数点数の精度次第では誤差が原因で誤った値を返してしまうので注意してください。
実装例パイソンがあるなぁ l から a を引く r から a を引くでプリントもしてますね
r 割る m 引く括弧 l マイナス 1 割る m m はメートルでしょ
だから l マイナス 1 してるのは何でだ
座標をゼロ扱いにするっていうのは ちょっとなんとなくわかりましたが
だから amlr l マイナスイコール a r マイナスイコール a
ていうかこの時点でさらにマイナス1しておけばいいんじゃない l マイナスイコール a マイナス1
プリント r 割る m 引く
引くだね 引く
l 割る m いけるのかな提出してみましょうか少し
解答例とコードが違いますが試しに提出してみます うん
和が出た 実質同じだと思ったんですけどね
うーん サンプルで間違えてるなぁ
あるある m マイナス l マイナス l 割る m l マイナスイコール a
l マイナス1割る m a マイナス1
じゃあダメなのか なんでわざわざプリントのところで l マイナス1を使っているのかがちょっと
わかんないなぁ a マイナス1を括弧で括って再提出してみますこれでちょっとダメだったら
あーダメだねー コードテストの方でちょっと確認してみましょうか
あんまりなんでダメなんかが納得いかんので 53-16
に2が出る 回答例のままやると l マイナス1をプリントの中に入れると
なんでだ l マイナス1をプリントの中に入れないパターンで
l マイナスイコール1 3
l マイナスイコール a マイナス1っていうのが ダメなんだ
なるほど 表記のコーディング上の問題
なんですかね順序というか 通りましたね
はい ちょっとまだまだわかんないことが多いですね
では今回はちょっと b 問題までということでまた次回お疲れ様です
14:50

コメント

スクロール