AtCoder ABC #022 C - Blue Bird
C: Blue Bird - AtCoder Beginner Contest 022 | AtCoder
1 から出て 1 に戻る道を考えるが,まず,1に隣接している点から出て別の隣接している点に戻る道を考える.
1を除いたグラフについてワーシャルフロイドで全組み合わせの最短距離を求めておく.
1に隣接している点から2つずつ選び,点1 - 点i,点i-点j,点j-点1 の和の最小値を求め,答えとする.
答えがグラフを初期化した値より小さくなっていなかったら -1を出力.
High Sierra で VirtualBox の VM が起動できないときは
vagrant up
するとエラーで起動できなかったので,VirtualBox から手動で起動してみると,Kernel Extention がない,みたいなメッセージ.
VirtualBox を再インストールしてみたら,今度はインストールできない.
これは, High Sierra からは カーネル機能拡張に追加認証が必要になったせいで, システム環境設定のセキュリティーとプライバシーの一般タブのところで,「〜はブロックされました」みたいなのが出てるので,許可してやればよい.
High Sierra への長い道のり
Macbook Air mid 2012 を Sierra から High Sierra にアップデートしたが,色々ミスって大変だった.
アップデート
- 10時間ぐらいたっても終わってなかったので強制終了
- 起動ディスクが吹っ飛んで起動できなくなる
Command + R で起動して Time Machine から復旧
- 無事に復旧
- なぜかログイン項目に
/usr/local/lib/node_modules/npm/lib/utils/usage.js
が追加される
アップデート2回目
- 成功
- 以前から起動に時間がかかっていたのが気になっていたので,せっかくなのでクリーンインストールすることに.
クリーンインストール
データを復元
- インストール時には復元せずに,後から移行アシスタントで戻すことに
- 前と同じユーザー名(ユーザー1)でアカウントを作ったので,そのまま戻せない
- 管理者ユーザーをもう一つ作り(ユーザー2),ユーザー1を削除
- 移行アシスタントで復旧
FileVault 問題
無事に復旧できたと思ったが,再起動すると ユーザーがユーザー2しか表示されない. ログアウト後には両方表示されるので,FileVault を解除できるユーザーにユーザー2しか登録されていないかららしい. なので,ユーザー1をFileVault を解除できるユーザーとして登録しようとしたが,なぜかエラーで失敗.
そこで,
- FileVault を解除 -> ユーザー2を削除 -> ユーザー1でもう一度 FileVault
としようとしたけど,FileVault をユーザー1でオンにしようとしたら
「認証サーバで操作が拒否されました.要求された操作は現在の資格情報では許可されません」
とエラーが出てできない.
調べてもわからないので,もう一度クリーンインストールすることに
クリーンインストール 2回目
今度は,インストール時にデータを復元. 多分問題なし.
ということで,アップデート2回,クリーンインストール2回 という結果になった.
起動に時間がかかる問題はなおらなかったのでアップデートが成功した時点でやめておけばよかったが,空き容量が20GB ほど増えたのでまあ良い. 移行アシスタントでユーザー名変えたくないときは,インストール時にするか,管理者ユーザーと普通ユーザーを作って普段は普通ユーザーで運用,とかすると後からでもデータ移行をスムーズにできると思った.
TimeMachine で復旧したのは初めてだが,
- めちゃくちゃ時間がかかる(250GBで5,6時間ぐらい)
- ログイン項目に
/usr/local/lib/node_modules/npm/lib/utils/usage.js
が毎回追加されるのは謎 - FireFox のプロファイルはバックアップされないらしい
- Thunderbird のプロファイルはバックアップされる
- アプリケーションはインストールされた状態で復元されるが,ライセンス認証などはやり直し
ということがわかった.
天下一プログラマーコンテスト2017
Beginner の方に出て A, B, C 解けて 69位
Rating は 1157 -> 1210
B
順位でソートして,最下位の順位 + 最下位の得点 を出力
C
N が偶数の場合は
なので,N, N, N/2 を出力
Nが奇数の場合は,
だから, が偶数にならないといけなくて,それはn と h のどちらかが偶数の場合.
n と h を固定すると,wは
となるので,n と h を 1から3500まで全て試して,wが割り切れればそれが答えとなる.
としたが,偶数奇数で分ける必要はなく,奇数の場合の解法だけでいける.