競プロっておいしいの?(仮)

ABC 079 参加記録

全完じゃああああああああ

お久しぶりです、全完さん。

わかりやすさを心がけていきたいですね。

デザイン簡略化していきまーす

A問題

後ろ3桁は1000で割ったあまり。

前3桁は10で割ればいい(切り捨てなので)

三項演算子を用いて

((A/10)%111==0||(A%1000)%111==0)?"Yes":"No";

B問題

素直に書きました

if(0,1)だけ例外処理

ans=a+b

b=a,a=ans;

を回しまくります。

long longに変数を統一しないとオーバーフローします(int 混ぜないでね)

C問題

A+-B+-C+-Dを素直にべた書きしてください。こっちのほうが早いです。

私は、Bit全探索を書きました。

 参考情報

D問題

問題概要と解釈

  1. 書いてあるすべての数を1にしたい。
  2. 全体でいくらコストかかるか求めよ。
  3. 1になれるのはすべての数。
  4. コストが羅列されている
  5. こんな感じなのが全てに生えていると言える
    すべての数に魔法が使えてなれるので
    (中心が変わったものが全てにある)

  6. あれ?これ、グラフっぽくないか?
  7. 一番小さいコストを求める、ということは、
    どこか経由してもいいから、結果1にできればいいよね。
  8. あれ?全部の頂点との最短距離求められるのでは?

  9. 各頂点から1までの距離が、コストでは...?
  10. できるじゃん!!!

というわけで、ワーシャルフロイド書きます。

で、ワーシャルフロイドの解説は別で書くかもしれません

 このリンクのソースは私のソースだった()

ワーシャルフロイド回して、d[a][1]を平面操作します(aは書いてある数値(-1はスルーする))

これで通せます。

おまけ。レート。Highest

 

 

 わーい