top of page

猿でもわかる[AtCoder Regular Contest 109 A問題 解説]

  • 執筆者の写真: 満月
    満月
  • 2020年11月29日
  • 読了時間: 1分

今回は下の問題の解説をしようと思います。


<満月の解説 ~Python~>


場合分けして考えてみましょう


1.aとbが等しい

Aのa階からBのa階の廊下を使うだけで良いので、出力はx。


2.a>b

下図の2つのルートより時間が短いルートは存在しません(ぜひ探してみてください)。では、それぞれのルートにかかる時間を計算しましょう。ここでは簡単にするため、aとbの高さの差が3階しかありませんが、本当はもっと差がある場合もあります。


ルート1......x+(a-b-1)*y

ルート2......(2*(a-b)-1)*x

この二つのルートの最短のルートを求めればいいわけですから、

min((2*(a-b)-1)*x,x+(a-b-1)*y)

で求められます。


3.a<b

下図の2つのルートより時間が短いルートは存在しません(ぜひ探してみてください)。では、それぞれのルートにかかる時間を計算しましょう。




ルート1......x+(b-a)*y

ルート2......2*(b-a)+1)*x

この二つのルートの最短のルートを求めればいいわけですから、

min(x+(b-a)*y,2*(b-a)+1)*x)

で求められます。


よってPythonでのコードは

  1. n = list(map(int,input().split()))

  2. a = n[0]

  3. b = n[1]

  4. x = n[2]

  5. y = n[3]

  6. if b == a:

  7. print(x)

  8. elif a > b:

  9. print(min((2*(a-b)-1)*x,x+(a-b-1)*y))

  10. else:

  11. print(min(x+(b-a)*y,(2*(b-a)+1)*x))

となります。



参考文献

https://oekaki.natureblue.com

最新記事

すべて表示
中央値の計算 <<関数>>

中央値とは...... 資料のすべてをその値の大きさの順に並べたとき,中央にくる数値。資料の個数が偶数なら,中央の順位に隣り合う二数の平均値。中位数。メジアン。メディアン。(スーパー大辞林より抜粋) これが中央値の計算ができる関数です。(lにはリストを入れること) def...

 
 
 
平均値を求める方法<<関数>>

いきなりですが問題です。 1日目の売り上げは5万円 2日目の売り上げは7万円 3日目の売り上げは4.8万円、1日あたりの平均売り上げは? この問題普通は電卓で計算するでしょうが、プログラミングで計算したくありませんか? 今回のお題はリストの平均値を求める方法です。...

 
 
『初心者へ』1分で学べるPythonのメリット

Pythonは ・AI ・機械学習 などに特化したプログラミング言語です。ほかにはC,C++,Java,Javascriptなどがあります。 <Python使うメリット> ・とても楽にプログラムを書くことができる。コード量が他の言語の2分の1になることも!...

 
 

Comments


Commenting has been turned off.
記事: Blog2_Post

©2020 by The Programing Guide。Wix.com で作成されました。

bottom of page