出来るだけ寝ていたい

1日最低12時間睡眠、寝たら負け

ディズニー アナハイムのホテルから空港へ

この記事はディズニーランドエクスプレスとスーパーシャトルとどっちを選ぶか迷った挙句、やっぱりディズニーが公式で運営してるバスの方が安心だし掛かる時間なんてカンケーないよと思ってバスに乗ろうと決意したもののわからないことだらけの人の為のものです。

注意

記事を書いている本人もその道のプロではないのでせいぜい今から書くことで精一杯です。

英語むーりーーーな人がこの記事を書いてます。


時刻表を貰おう



これはディズニーランドエクスプレスの時刻表案内の紙の表紙です。
どうやらディズニーランドエクスプレスと言うよりエアポートシャトルと言うのが正式名称らしいです。

私はこの紙をもらうためにホテルのベルボーイさんにcan i take a look at desneyland express's time schedule?みたいな感じでテキトーに言いましたが、少々相手が何の事か察するのに時間がかかってました。

事をスムーズに進めるためにはcan i take a look at airport shuttle's time schedule?みたいに言えば良いはずです。

まあ、最悪無くても下の画像を見れば問題ありません。
(このパンフレットを貰ったのは2017年8月30日です。)

バスの入り口付近にもこの紙はあるので、行きでバスに乗るような人はその時にゲットしておくと良いでしょう。

注意

この紙は特定のホテルでしか貰えません。

特定のホテルとは、このバスが止まるバス停が存在するホテルというものです。

このバスは悲しい事に全てのホテルにいちいち止まってくれるほど親切ではありません。
なので、バス停のあるホテルのベルボーイさんに紙をもらいましょう。

そのバス停のあるホテル、、どこなの??と思った方、焦らずに読んでいけば分かります。

この紙、空港からディズニーランドパークに行く場合はどこで貰えば良いのか分かりません。
従って、もしもこの記事を読んでいる方で空港からディズニーランドパークに行きたいと思っている人がいれば次の画像を頼りに行ってください。
おすすめのわかりやすいサイトも載せておきます。
http://tdrnavi.jp/blog/5139

↑これは空港からディズニーランドパークへの時刻表です。行く際にでも参考にしてください。

↑これはロサンゼルス国際空港(LAX)行きのバスの時刻表です。

この写真の左側に書いてあるホテル名、これが先ほど説明したディズニーランドエクスプレスが止まるホテル一覧になります。


自分のホテルの名前が書いてありますか?


書いてあったらベルボーイさんなどに時刻表を貰い、バス停の位置なども確認しておくと良いでしょう。

書いてなかった人は、今泊まっているホテルから距離が近い該当のホテルがどこなのかを予め自分で見つけましょう。Googleマップで見つけるもよし、実際に外に出てみて周りのホテルを見渡してみるのも良い手だと思います。
なお、近くのバス停があるホテルを見つけたらそこのホテルのベルボーイさんにバス停の位置を聞いてみましょう。教えてくれるはずです。

↑これはもう1つ別の空港行きの時刻表のようです。参考にどうぞ。

バスに乗る

いざ、バスに乗ります。

と言っても紹介することがあまりないです。

料金は2枚目の画像の通りですし。
バスが来たら運転手の人がトランクなどの大きめな荷物を荷物入れに入れてくれます。

そして、どこの航空会社の飛行機に乗るのか聞かれます。これはロサンゼルス国際空港のターミナルが航空会社によって場所が全然違うからです。
例えば私の場合では、ユナイテッド エアラインと答えました。

バスに乗ったら適当に席に着きます。

バスは一旦全てのバス停に止まりながらお客さんを乗せます。

最後のバス停(desneyland Hotel)に着くと、運転手とは違う係りの人が乗ってきます。
この人にお金を払います。

正確には、片道(one way)か往復(round way)かを聞かれます。帰りなら大体の人はone wayと答えるでしょう。別に何らかの事情があればround wayでも構いません。
そして、精算。

注意

お金は現金で支払うことが出来ません。
予めクレジットカードを用意しておきましょう。


係りの人にクレジットカードを渡して精算し、終わりです。

乗車してる人全員の精算が終わり次第空港へと出発します。
混雑やトラブルが無ければディズニーの敷地から空港までは40分くらいです。

空港に着いた

空港に着き、自分の行きたいターミナルに着いたらバスを降ります。
そしたら、大きめの荷物を荷物入れに入れていた場合は運転手が取り出してくれます。
全て取り出してもらったらチップを渡しましょう。1から3ドル程度ですね。僕は1ドル出しました。ただし、これはすこし少なかった気がします。

めでたく空港に到着

おめでとうございます。これであなたはエアポートシャトルのプロですね。

空港に着いたら預ける荷物にタグのシールを付けるために、それ専用の機械で操作しましょう。日本語設定ができるので英弱も元気になります。

それが出来たらカウンターで荷物を預けて、パスポートと座席チケットを見せましょう。
すぐに終わります。

その後は荷物検査など恒例行事を済ませて終わりです。

お疲れ様でした。長々と説明を読んでもらってありがとうございます。
楽しい旅行を。

最近

最近やってる事

  • 唐突にスランプに似たものをがやってきて伸び悩んでいるので少しずつ問題をやっています。
  • ABCのC問題を埋めているが、最近のC問題が解けるだけで少し前の問題で満点が取れないので基礎的又は簡単なアルゴリズムを学んでいます。
  • 気分転換に部活をやっています。(剣道)

学んだ事

ここでは典型的な自分が学んだアルゴリズムの名称だけをつらつら書きます。
詳しくはググってね。

とかとか。
これらは内容を理解する事自体は簡単だと思います。ただ、動的計画法などは簡単に応用可能なので理解は出来ても正しく実装ができるかは努力次第です。個人的にも頭抱えてます。

これから

まだまだ勉強量、AC数が足りていないので解いていきます。今はまだ難しいアルゴリズムを無理にやっても時間だけが過ぎていく可能性が高いので基礎的アルゴリズムをミスを出来るだけ少なく実装できるように精進します。それにまだ典型的なアルゴリズムで知らないものも多いと思いますし。
やろうかなーって思っているのはUF木、使えるようにしたいのはlower_bound、uper_boundですね。

圧倒的勉強量が足りてない

はい、足りてないんです。

そんだけです。

部活とかやってる場合じゃないと思います。(個人的には部活は勉強の合間の気分転換だと思ってる)

僕の実力は世界的に見れば中2以下といったところでしょうか。

いやいや、それは流石にないと思った人は頭がお花畑で羨ましいです。

春休みにも勉強して、大学の院生達にも教えてもらったりしましたが、本気で自分はプログラマーのプの字も達成できてない雑魚だなと思ってます。

自己否定ばっかじゃん。それだから情報の人間はアスペと思った人もいると思うので改善策を。

勉強する。

これに尽きるでしょ。(多分)

僕の友達なんかだと多分ほとんどが勉強量がエグいって感じの人達。
一部、数学オリンピックでメダル取った人もいるけど彼は別。(一週間で抜かれた)

雑魚が勉強するとか言ってるのを見ると腹立つ人が多いのでツイートはしませんが勉強します。

これでも一応大学内では勉強してる人間に部類されるんだけど、悲しい事に大学内のレベルがほぼFランだから自分のレベルを絶対的に見れていない。

正直勉強すら極める事ができないこの自分、一体どんな理想論を掲げてプログラマー目指してるんだ感があるのですが(東大とか本当に強い。)申し訳ないが食らいついていきたい。

アルゴリズとデータ構造をそのうち学ぶんですけど、dpが最後って…。

こんなもんですかね。

個人的にはその後からが気になってた。正直dpまでは簡単な問題なら教養的なところがあるから皆んな知ってる気がするんですが(ここでの皆んなとは勉強してる人の事を言います)。

でも良いですね。

僕も結構分かってなかったりするので。理解したわーとか言ってる割に出来てないとかあるんで。

理解したわーって言ってる奴に質問して相手が理解できてない事が発覚した時って快感を感じる。(性格が悪い)

どんどん性格が悪い方向に行っている。

ダメですね。これじゃ。(治す気ゼロ)

久々

久々にゲームセンターでボルテやってきた。

KAC解禁ロード前半戦を終えた感じ。
次行った時はブラスターやって解禁ロード後半戦を終わらせたいと思ってる。

結果としてはかなり良かった。

一番苦労したのはかめりあのソフラン曲(名前忘れた)。
あれ多分10回近く落ちた。
癖着いたのが辛かった。

ぺのれりの曲は1回落ちただけだった。

個人的には変速曲がかなり苦手なのでぺのれり<かめりあって感じの難易度。

まぁ何にせよこれでブラスターさえやればillnessが解禁できると思うと嬉しい。
何故ならこれだけストレートに全曲解禁できるのが多分生まれて初めてだから。

まぁまぁ、ボルテはやり過ぎは駄目だけどたまにプログラミングの合間にちょこっとだけやりにいくと一番成果出るからこれからも地味に頑張っていきたい。

近いうちの目標は後光或帝滅斗です。

個数制限付き部分和問題

蟻本の初級編にあるDPの練習用問題。

漸化式は同じ立て方なので、

dp[i+1][j]=i番目まででjを作る際に余る最大のi番目の個数

とする。
DPテーブルを自分で書いてもらうと分かるように、ループの方向がj→j+a[i]の方向しか向いていないので配列の再利用が可能。
よってdp[j]という1次元配列でDPが可能である。

ひとまずやっている事は蟻本と変わらない。
しかし、自分はdp漸化式をソースコードとして書く際に右辺にiとjが来るように書いている(蟻本の場合は左辺)。

従って蟻本とは少し変わったプログラムを書いた。その時の記録である。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=(a); i<(b); i++)
#define all(c) (c).begin(),(c).end()
#define rall(c) (c).rbegin(),(c).rend()
#define sort(v,n) sort(v,v+n);
#define vsort(v) sort(v.begin(),v.end());
#define ll long long
#define pb(a) push_back(a)
#define fi first
#define se second
#define inf 999999999
using namespace std;
typedef pair<int,int> p;
typedef pair<ll,ll> lp;
bool is_uruu(int y) {
        return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
}
const ll MOD=1e9+7;
const double PI=acos(-1.0);
//----------------------------------------------------------------------------------------------------------------------------------//

int n;
int a[100],m[100];
int k;
int dp[100001];
int main(){
        cin>>n;
        for(int i=0; i<n; i++) {
                cin>>a[i];
        }
        for(int i=0; i<n; i++) {
                cin>>m[i];
        }
        cin>>k;
        memset(dp,-1,sizeof(dp));
        dp[0]=0;
        for(int i=0; i<n; i++) {
                for(int j=0; j<=k; j++) {
                        if(dp[j]>=0) dp[j]=m[i];
                }
                for(int j=0; j<=k; j++) {
                        if(dp[j]>0 && j+a[i]<=k) {
                                dp[j+a[i]]=dp[j]-1;
                        }else if(dp[j]<0) {
                                dp[j]=-1;
                        }
                }
                for(int j=0; j<=k; j++) {
                        cout<<dp[j]<<" ";
                }
                cout<<endl;
        }
        if(dp[k]>-1) {
                cout<<"Yes"<<endl;
        }else{
                cout<<"No"<<endl;
        }
}

漸化式の書き方も色々あるそうなので、最終的にはどんな書き方でも書けるようにしたい。

P≠NP問題

まあ、通常情報系の勉強をしに大学に行っている人間は誰でも知ってはいるであろう(知らない人は大学やめた方が良いかもしれない)この有名なミレニアム懸賞問題

私の場合、この問題自体は中学の頃に適当にパソコンで「ミレニアム懸賞問題」と検索したところ偶然にもそのリストの中に「P≠NP」という全く何を言っているか教える気もない様な面をした問題があるなぁなんて感じてスルーしたのが初対面だったかと。

高校の時は妄想でPは確率、Nは整数かな!なんて思って放ったらかしにしました。駄目な子ですね。せめてもう少し調べれば良かった…。

大学に入る前に友達と本屋に行って「専門外の知識の概要や面白さをある種の教養として知っておきたいね。どんな本が良いのだろう。こう、数式が沢山ある定量的で参考書の様な本よりか定性的な感覚で大まかに理解できる本は中々見つからないね。」と喋っていたらBLUE BACKSなる良い本たちを紹介してくれた。
ざっと本棚に積まれたBLUE BACKSを眺めると確かに一般大衆向け。
「なるほど。自分の友人には博識な人が山ほどいるが彼らはこういう本を片っ端から読んだのか。流石だなぁ。」なんて思いながら見つめていた。
すると友人が一冊手に取って僕に見せてくれた。題名は『「P≠NP」問題』と書いてある。
見たことのある問題だけど何で僕に見せた?と思っていると彼は「これは君に絶対に必要な類の話題。だって情報系の人間だろ?それに君は数学も大好きなんだから。」と言われ驚いた。
こいつがまさか僕の専門内なのか……??
渋々見てみると本当にコンピュータの事が書いてあった。第一印象とはまるで違った。
友人は「専門内の内容なら知っておけ。他の情報系の人間に馬鹿にされるぞ。自分の専門内の事かどうかもわからない人間は大学に来なくていい。」と言い「確かにそれは嫌だな。ごもっとも」と思い買った。(危ない危ない。ギリギリ大学入学前だからセーフ)

いざ読む。新書は読みにくいが専門書よりマシ。
優しく書かれていたがどうもピンと来ない。
あーわかってないなぁ。と思い諦める。
これは一年後に読もう。そして今はこの様な問題がこれから自分が学ぶ内容の中に潜んでいるという事実だけを覚えて先に進もうと約束した。

一年経ったから読んだ。
前半はえらく簡単な内容になってる。
中盤もえらく簡単な内容になってる。
後半もまあわかった。
感動したね。一年でここまで自分の脳みそは成長したと思うと。
これが専門内っていうことなのか、と。
まぁ大体大学で習った事の復習レベル。
計算量という概念に関しては自分はアルゴリズムに興味があって独学である程度勉強していたのですんなり頭には入った。問題無かった。それに計算量と言ってもO記法とΩ記法、Θ記法を知っていれば良いだけなのでこの程度なら情報系なら知ってて当然の類。
Pが何を表し、NPが何を表すのかもしっかりと把握した。(確率と整数じゃ無かった。)
決定性アルゴリズム多項式計算時間と非決定性アルゴリズム多項式計算時間を表すのだけどまぁ特別解説できるほどの能力は持ち合わせていないので省略。
それにこれくらいの事はどうやら情報系は知っているらしいので今更いいか。

問題の意味がわかって初めて、この問題は本当にクレイジーなのだなと。数学科の人間にはお前はまだこの問題がどれ程難解なのか分かりきってない死ねと言われるだろうがあくまで感覚なので許して下さい。

まあ無事この本も読めたし、また集中してアルゴリズムの勉強を再開できるなぁ。

復習?bfs

今日は幅優先探索の勉強をしたよ。

今の今までdfsに重きを置いていたから、よくよく考えたらbfsの実装は今回が初めてだったかもしれない。

いつも通り蟻本の問題を解いた。前回のdfsの勉強と違ってかなりすんなり出来た。といっても3時間くらいかかったのかな。ミスがシンプルだったから良かった。

幅優先探索再帰的に実装するんじゃなくて、queueを使って次状態を保存していくやり方。
再帰的に実装しないからか関数の引数はvoidだった。(これについてはまだよくわかってないので断言出来ない。もっと経験を積みますね。)

あと余談だけど実装で初めて排他的論理和を使ったかもしれない。まあ、本当にどうでもいいのだけれど。

//poj
/*  .  ∧_∧
    ( ´・ω・)
    //\ ̄ ̄旦\
   // ※ \___\
   \\  ※  ※  ※ ヽ
     \ヽ-___--___ヽ*/

#include <iostream>
#include <algorithm>
#include <functional>
#include <cstdlib>
#include <sstream>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <complex>
#include <vector>
#include <cstdio>
#include <cmath>
#define rep(i,a,b) for(int i=(a); i<(b); i++)
#define all(c) (c).begin(),(c).end()
#define rall(c) (c).rbegin(),(c).rend()
#define sort(v,n) sort(v,v+n);
#define vsort(v) sort(v.begin(),v.end());
#define vvsort(v) sort(v.begin(),v.end(),greater<int>());
#define ll long long
#define pb(a) push_back(a)
#define fi first
#define se second
#define inf 999999999
using namespace std;
typedef pair<int,int> P;
typedef pair<ll,ll> lP;
typedef priority_queue<int> PQ;
typedef priority_queue<int,vector<int>,greater<int> > RPQ;
bool is_uruu(int y) {
        return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
}
template<class T>inline string toString(T x){
        ostringstream sout; sout<<x; return sout.str();
}
const ll MOD=1e9+7;
const double PI=acos(-1.0);
//-------------------------------------------------------------------------------------------------------------------------------------------//
int ny,mx;
char a[101][101];
int d[101][101];
int gx,gy;
int bfs(){
        for(int i=0; i<ny; i++) {
                for(int j=0; j<mx; j++) {
                        d[i][j]=inf;
                }
        }
        queue <P> q;
        for(int i=0; i<ny; i++) {
                for(int j=0; j<mx; j++) {
                        if(a[i][j]=='S') {
                                q.push(P(i,j));
                                d[i][j]=0;
                        }
                }
        }
        while(!q.empty()) {
                //cout<<"-------------------------------------------------"<<endl;
                int nowy=q.front().fi;
                int nowx=q.front().se;
                //cout<<nowy<<" "<<nowx<<endl;
                //cout<<d[nowy][nowx]<<endl;
                q.pop();
                if(a[nowy][nowx]=='G') {
                        gy=nowy;
                        gx=nowx;
                        break;
                }
                a[nowy][nowx]='#';
                for(int dy=-1; dy<=1; dy++) {
                        for(int dx=-1; dx<=1; dx++) {
                                if((dy^dx)!=0 && (dy^dx)!=-2 && (a[nowy+dy][nowx+dx]=='.'|| a[nowy+dy][nowx+dx]=='G') && d[nowy+dy][nowx+dx]==inf) {
                                        //cout<<"nowy+dy="<<nowy+dy<<" nowx+dx="<<nowx+dx<<endl;
                                        d[nowy+dy][nowx+dx]=d[nowy][nowx]+1;
                                        q.push(P(nowy+dy,nowx+dx));
                                }
                        }
                }
        }
        return d[gy][gx];
}

int main(){
        cin>>ny>>mx;
        for(int i=0; i<ny; i++) {
                for(int j=0; j<mx; j++) {
                        cin>>a[i][j];
                }
        }
        cout<<bfs()<<endl;
}

こんな感じ。
次からは貪欲法の勉強になります。