1. 競プロする人
  2. AtCoder Beginner Contest 134
2024-07-31 22:01

AtCoder Beginner Contest 134

AtCoder Beginner Contest 134

https://atcoder.jp/contests/abc134

↓の提出コードを見ながらの聴取を推奨いたします
A:https://atcoder.jp/contests/abc134/submissions/50277391

B:https://atcoder.jp/contests/abc134/submissions/50277426

C:https://atcoder.jp/contests/abc134/submissions/50277579


Atcoderホームページ:https://atcoder.jp/home

2・5・11・17・23・31日更新予定

#競技プログラミング #Python #podcast

サマリー

AtCoder Beginner Contest 134では、A問題からC問題までの解説があります。解説では、1番目のmaxを取る方法や、それ以外の場合のm2の出し方を確認して、入力例1を再度確認してから提出します。

00:04
AtCoder Beginner Contest 134
A問題 土手過言
A問題 土手過言
問題文 半径Aの円に内設する正十二角形の面積は3Aの2乗であることが知られています。
整数Rが与えられるので、半径Rの円に内設する正十二角形の面積を求めてください。
はい、なので、3R次乗かな。
入力例4の場合48、正十二角形の面積は3×4×4。
4の次乗ですね。
なので、3×R×Rだな。
Nイコールイントのインプット、プリント、3×N×Nで提出。
はい、閉鎖しました。B問題に行きます。
B問題 ゴールデンアップル
問題文 一列に並んだN本のリンゴの木のうち、いずれかに黄金のリンゴが実ると言われています。
そこで、何人かの監視員を配置して、どのリンゴの木もいずれかの監視員に監視された状態にしたいです。
それぞれの監視員はN本の木のうちいずれかに配置します。
便宜上、これらの木に1からNまでの番号を付けます。
番号iの木に配置された監視員は、番号がi-d以上、i-d以下のすべてのリンゴの木を監視します。
条件を満たすために少なくとも何人の監視員を配置する必要があるか求めてください。
NもDも20以下なんですね。少ないな。
入力はNとDがそれぞれ与えられます。入力例1は6、2。
木が6本あって監視員の見る範囲が2。だから5かな。
i-d以上、i-d以下。だから5個範囲がある。
入力例2は14の3、7。
出力例2でしょ。入力例3は20の4でしょ。
8、9、10。そうですね。
なので与えられたDを2倍してプラス1して、それを割った数ですね。
NDイコールマップのイントインプットドットスプリット。
Dイコール2かけるDプラス1。
で、プリントN割るD。
if N%Dがイコールイコール0だったら。
エルスそうでなければ、N割るDプラス1が答えとなるはず。
入力例1は6、2で2が出たらOK。2。
入力例2は14の3で2が出たらOK。
入力例3は24で3が出たらOK。
出ましたのでとりあえず提出していきます。
C問題 エクセプションハンドリング
ACしましたのでC問題いきます。
C問題。エクセプションハンドリング。
問題文。長さNの数列A1からANまでが与えられます。
1以上N以下の覚醒数iに対し次の問いに答えてください。
数列中のANを除くN-1個の要素のうちの最大の値を求めよう。
数列中のAのiを除くN-1。
この要素のうちの最大の数。はいはいはい。
えー。ふん。
NとAIがそれぞれ
1、10、100、1000、10,000、20万個あるので
4分1回って感じかな。
入力は以下の形式で標準入力から与えられる。
Nを与えられて数列中のAIを除く。
ん?
入力例1。Nが3のAは143。
数列中のAHを除く2個の要素。
A2イコール4とA3イコール3。はいはいはいはい。
あーなるほどね。
と、数列としては与えられないんだ。
もういきなり
これを抜いてくださいよって出るわけだ。
じゃあNイコールインと
インプット。
で、Aイコール空のリスト。
4IインレンジN。
Aドットアペンドインとインプット。
で、MイコールマックスA。
違うな。辞書だな。
辞書で取るのが正解だな、これは。
Aイコール空の辞書を作っておいて
TMP
4IインレンジN。
で、TMPイコールインとのインプット。
If
TMP
Aの中にTMPが
TMP
ノットイン
A
だったら
Aの
TMPイコール1。
エルスAのTMP
プラスイコール1。
で、Mが
マックスA。どうしようかな。
MがマックスA。
これマックスAって辞書で使えるのか?
プリントMを押して確認をしたい。
はい。
4。あ、出るね。OK、OK。
じゃあ
4
キーかな。
inA.items
これで
キーだけ出せる?
別にバリューも出していいんだけど。
あ、全部出るね。
キーと
じゃあ
バリュー。
はいはいはいはい。で、
プリントするのは最大値ね。
if
key
イコールイコールM
&
バリューイコールイコール1だったら
だったら
2番目のマックスも取らないといけないな。
いけないだってなんだ。
うーん、なるほど。
そうなっちゃうか。
じゃあ、keyイコールM
で、バリューが
1より大きかったら
プリントMでいいんですよね。
だから最大の数っていうのは
2つ以上ある場合
最大の数を出せばいいので。
そうじゃなかった場合だな。
うーん。
キーがMじゃない場合もプリントMでいいですね。
if key
notイコールM
or
keyイコールM
かつ、バリューが1以上。
1以上じゃない。
2以上の場合ですね。
キーがMで
1個だけのときってどうすりゃいいんだ?
2番目のマックス値ってどうやって取るんだこれ。
2番目のマックス値を
5文字Aにして
setにして
tmpイントインプットをa.add
tmpでsetの中にも入れて
setって
setって
sortできたっけ。
できなかった気がするな。
a.sort
プリント小文字Aで確認しましょうか。
うーん。やっぱダメだね。
object has no attribute sortなので
5文字Aを
リストに変えないといけない。
リスト小文字Aで
a.sort
はいはいはい。できましたね。
で、じゃあ
リストa.sortの
sort reverse
trueの1個目が
マックスから2個目になると。
あれ?
non-type object is not
あれ?なんで?
reverseじゃない。reversed?
めっちゃカラス鳴ってるな。
鳴いてるな。
うーん。
あ、そうか。sort
sortって
m2の中には入れられないっけ。
a.sort reverse equal to trueだ。
はいはいはい。OKですね。
なので
m1が
マックス最大値で
m2が
5文字Aの1番目だ。
ってやればOKだね。
else
print
m2
でOKなはず。
あれ?
m1って変数名変えたから。
if k
key not equal m1 or
key equal equal m1 and value
でprint m1
else print m2だ。
434。いいですね。
入力例には55
が出たらOK。
あれ?
list index out of range
あーセットにしちゃったから
オーバーしちゃうんだ。
ってことは
オーバーしないでしょ、普通。
ん?
でも全部同じ数字だったら
オーバーするか。
だから1番大きい数と
2番目に大きい数を
定義しておいて
ん?っていうか1番大きい数が
2個以上あったら
1番大きい数を出すときは
もう価値覚
でしょ?
制約は?
20万?
制約あんま関係なさそうだな、これ。
セットにして
どこでエラー入ってんの、これ。
m2
list index out of range
なんで?
標準入力255
あ、そうか。
nが2で
55
えー、じゃあ
if a
小文字a
のサイズですね。
連小文字a
イコールイコール1だったら
何もしないでしょ?
だから
1より大きかったら
m2イコール
aの1番目
elseそうでなければ
m2も
m1です。
これでどうだ。
はい、5
55が出てほしいんだよな。
あー、a.itemsにしてるからか。
なるほどね。
じゃあ
nだな。
for in range
n
で、if
あー、リストにしてないや。
普通のリストも作らないといけない?
めちゃくちゃ汚いコードになっちゃうな。
まあ、いっか。
lイコール
ただのリストを作って
l.append
append
tmp
maxとった
とった
for in range n
if aの
i番目
辞書aの
lの
i番目だね。
んー
if lの
i番目が
lの
i番目が
not equal m1
m1じゃなかったら
プリントm1でいいや。
aの
辞書の
m1が
1以上
だったら
プリントm1。
ん?何言ってるかわかんなくなってきたな。
lの
i番目が
maxの数字
じゃなかったらプリントm1でOK。
で、aの
m1
辞書をしていて
maxの数をカウントしているのが
1より大きかったら
問題解説と入力例の確認
問答無用で
1番目のmaxを取ればいいから
うん。OKだね。
で、m2
それ以外だったらm2を出せばいい。
55
はい、入力例1をもう1回確認します。
434が出れば
とりあえずは
入力例はクリア。
434。はい、提出していきます。
ちょっとこれで疲れちゃったから
D問題はまた後に
しましょうか。
後というか、またいつか。
ACしたので
今日はここまでにしておきましょう。
では、また次回。お疲れ様です。
22:01

コメント

スクロール