[[CBS^LIVE]] Cincinnati Bengals vs Pittsburgh Steelers Live Streaming (NFL) Watch Steelers vs Bengals Stream Week 8 : HooLF

週末海外デビューを台湾にした理由

最近では、羽田空港からの深夜国際線も増え、週末に手頃に海外へ行きやすくなってきています。

f:id:kotobalover:20170827234641j:plain

こんにちは。

 

ひつじ編集長。です!

 

タイでは日本と同じくLINEが連絡手段のメインストリームです。

 

もしタイ人と英語なり、タイ語なりでLINEを通してメッセージのやりとりをした方は、文章の後ろに「555」という数字を見たことがあるかと思います。

 

今日はこの「555」はどんな意味なのか、その語源はなんなのか、を解説していきます!

 

  • 「555」は「笑」「www」の意味
  • なぜ「555」が「www」や「笑」の意味になるのか
  • 各国の「笑」の表現
    • 英語圏
    • スペイン語
    • フランス語
    • スウェーデン
    • ドイツ語圏
  • まとめ

 

「555」は「笑」「www」の意味

f:id:kotobalover:20170827234653j:plain

文脈で予想できるかもしれませんが、「555」というのは日本語の「笑」「www」に相当します。

 

笑いの程度を表現するとき、日本語が「wwwwwwww」と重ねるように、タイ語でも「5555555」と重ねることで、大笑いしていることを表現できます。

 

なぜ「555」が「www」や「笑」の意味になるのか

f:id:kotobalover:20170827234715j:plain

タイでは「5」は「hâ/ハー」と発音されます。この「ハー」を重ねることによって「ハハハ」という音になるんですね。

 

覚えやすくて、可愛い感じで、良いですね。

 

ちなみにせっかくタイの「笑」の表現を覚えたんで、世界各国はどんな風に表現するのか見てみましょう。

 

各国の「笑」の表現

f:id:kotobalover:20170827234749j:plain

英語圏

「hahaha」「lol」

これはわかりやすいですね。ちなみに「lol」は「Laugh Out Loud(大笑い)」の略。

 

スペイン語

「Jajajaja」「mdr」

「Jajajaja」はなんかわからないけど、わかる気もする。「mdr」にいたってはなんなのかさっぱり。

 

フランス語

「mort de rire」

なんて読むかわかんない。でもとりあえずおしゃれすぎる。

 

スウェーデン

「asg」

めっちゃ不機嫌そう。

 

ドイツ語圏

「g」「G」

これはわかりやすくていいですね。「www」に通じるものがある。(あるのか?)

 

参考:

https://digitalfan.jp/113265

 

まとめ

この「555」という表現は若者を中心に、広く使われていますので、タイ人の友達ができて、LINEをするときがあれば、ぜひどんどん使ってみてください!

 

こちらも合わせてどうぞ!

www.thaislife.com

www.thaislife.com

問題

問題概要

区間に対するクエリの問題。区間全体に対して、値を変更するため、遅延segment treeを使う。

解法

segtreeぽいな感はある。90度回転させてみるのは思いつかない。 解法は公式解説がわかりやすい。

https://tenka1-2016-qualb.contest.atcoder.jp/data/other/tenka1-2016-qualb/editorial.pdf

今回作らなければならないsegtreeは
-区間に⼀様に数を⾜す
-区間の中での最⼩値を取得
なので遅延segtreeは以下の 変更するのは以下の5点? 下の問題の時はは3か所て書いたけど、5かな、あとは、lazyの初期化部分とかも気をつけないと、今回は加える数字だから、遅延がない=0

mmxsrup.hatenablog.com

(1)遅延情報の適用方法 -lazyにはその区間に加えなければならないが、また加えていない値が入っているので、加える
(2)遅延情報の伝搬方法 -lazyはその区間に加える値なので、lazyを子に伝搬するときは加える
(3)値のマージ -segはその区間の最小値を入れるので、minをとる
(4)欲しい値の戻り値 -(3)と同じことをするだけ
(5)遅延情報の更新 -updateで新たに範囲に加える値が来るので、それをlazyに加える
の5箇所を変更すればいいのかな?

ミス

難しいい。遅延segtreeはだいぶわかっってきた。

コード

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
typedef long long ll;
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)

//区間に⼀様に数を⾜すと区間の中での最⼩値を取得をできるsegtree
const int MAX_N = 1 << 20;
const ll INF = 1e9;
int size;
ll seg[MAX_N * 2], lazy[MAX_N * 2];//segは欲しい情報 lazyは区間に対する一様な処理を示すもの?
struct segtree{
    //seg:区間の最小値 lazy:区間に対して、加える値でまだ遅延しているもの
    segtree(int n){
        size = 1;
        while(size < n) size *= 2;//要素数を2のべき乗に
        for (int i = 0; i < 2 * size - 1; ++i) lazy[i] = 0;//0は遅延しているものがないことを示す
    }

    //遅延評価
    void lazy_evaluate_node(int k, int l, int r){
        if(lazy[k] != 0){//遅延がある時
            //(1)この位置を変える(遅延情報の適用方法)
            seg[k] += lazy[k];//区間[l,r)にすべて同じ値を追加することになっていて、segには最小値が入っているので、加える値を足すだけ
            if(r  - l > 1){
                //(2)この位置を変える(遅延情報の伝搬方法) 今回は数字を加える
                lazy[k * 2 + 1] += lazy[k];//左の子に伝搬
                lazy[k * 2 + 2] += lazy[k];//右の子に伝搬
            }
            lazy[k] = 0;//ノードkは伝搬完了
        }
    }

    //update(a,b,v) := [a,b)を全てvを加える
    void update(int a, int b, ll v, int k = 0, int l = 0, int r = size){
        lazy_evaluate_node(k, l, r);//辿ったノードはついでについでに伝搬しておく
        if(r <= a || b <= l) return;//[a,b)がノードkの区間[l, r)と交差しない
        if(a <= l && r <= b){//[a,bが[l,r)を完全に含んでいる
            //(5)この位置を変える(遅延情報のの更新)
            lazy[k] += v;//ノードkの区間[l,r)を全てvを加えるa
            lazy_evaluate_node(k, l, r);//一回遅延評価しとかないと都合悪い?? ([l,r)の葉の数字は全て同じ値)
        }else{
            update(a, b, v, k * 2 + 1, l, (l + r) / 2);
            update(a, b, v, k * 2 + 2, (l + r) / 2, r);
            //(3)この位置を変える (値のマージ)
            seg[k] = min(seg[k * 2 + 1], seg[k * 2 + 2]);//ノードkを更新 2つの子の最小値
        }
    }

    //get(a,b) := [a,b)に対する最小値を求める
    ll get(int a, int b, int k = 0, int l = 0, int r = size){
        lazy_evaluate_node(k, l, r);//辿ったノードはついでについでに伝搬しておく
        if(r <= a || b <= l) return INF;//[a,b)がノードkの区間[l, r)と交差しない時INFを返す
        if(a <= l && r <= b) return seg[k];//[a,bが[l,r)を完全に含んでいる時そのノードの値を返す
        ll x = get(a, b, k * 2 + 1, l, (l + r) / 2);//左の子の最小値
        ll y = get(a, b, k * 2 + 2, (l + r) / 2, r);//右の子の最小値
        //(4)この位置を変える(欲しい値の戻り値) (3)と同じ感じに
        return min(x, y);
    }
};

int l[100010], r[100010], x[100010];
int s[100010], t[100010], k[100010];
vector<pair<int, int> > add[100010], del[100010];
vector<int> query[100010];
int main(void){
    int n; cin >> n;
    vector<int> a(n); rep(i, n) cin >> a[i];
    int A; cin >> A;
    //a[i]のi列に対しての処理ごとにリスト化
    rep(i, A){
        cin >> l[i] >> r[i] >> x[i];
        add[l[i]].push_back(make_pair(i, x[i]));
        del[r[i]].push_back(make_pair(i, x[i]));
    }
    int B; cin >> B;
    //a[i]のi列に対しての処理ごとにリスト化
    rep(i, B){
        cin >> s[i] >> t[i] >> k[i];
        query[k[i]].push_back(i);//ai列目に対するクエリが何個目のクエリなのか
    }

    ll ans[100010];//ans[i] := i番目のクエリに関する答え
    segtree st(A + 1);
    //a1列からan列へ順番に見ていく(それぞれの列の初期値は無視して、増加現象部分のみの列としてみる)
    for (int i = 1; i <= n; ++i){
        st.update(0, 1, 0);
        for(auto u : add[i]){
            st.update(u.first + 1, A + 1, u.second);//[u,A)まで加算
        }
        for(auto u : query[i]){
            ans[u] = a[k[u] - 1] + st.get(s[u] - 1, t[u] + 1);//初項と範囲の最小値
        }
        for(auto u : del[i]){
            st.update(u.first + 1, A + 1, -u.second);//[u,A)まで減算
        }
    }
    rep(i, B){
        printf("%lld
", ans[i]);
    }
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vint;
typedef pair<int,int> pint;
typedef vector<pint> vpint;
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define all(v) (v).begin(),(v).end()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define chmax(a, b) a = (((a)<(b)) ? (b) : (a))
#define chmin(a, b) a = (((a)>(b)) ? (b) : (a))
const int MOD = 1e9 + 7;
const int INF = 1e9;

const int MAX_N = 1 << 18;
ll seg[MAX_N * 2], lazy[MAX_N * 2];//segは欲しい情報 lazyは区間に対する一様な処理を示すもの
struct segtree{
public:
    int SIZE;
    //seg:区間の最小値 lazy:区間に対して、加える値でまだ遅延しているもの
    segtree(int n){
        SIZE = 1;
        while(SIZE < n) SIZE *= 2;//要素数を2のべき乗に
        for (int i = 0; i < 2 * SIZE - 1; ++i) lazy[i] = 0;//0は遅延しているものがないことを示す
    }
    void lazy_evaluate(int k, int l, int r){//遅延情報の適用方法
        if(lazy[k] != 0){
            seg[k] += lazy[k];//区間[l,r)にすべて同じ値を追加することになっていて、segには最小値が入っているので、加える値を足す
            if(r  - l > 1){
                lazy[k * 2 + 1] += lazy[k];//遅延を左の子に伝搬
                lazy[k * 2 + 2] += lazy[k];//遅延を右の子に伝搬
            }
            lazy[k] = 0;//ノードkは伝搬完了
        }
    }
    void update(int a, int b, int k, int l, int r, ll x){
        lazy_evaluate(k, l, r);
        if(r <= a || b <= l) return;
        if(a <= l && r <= b){
            lazy[k] += x; //加える
            lazy_evaluate(k, l, r);
        }else{
            update(a, b, k * 2 + 1, l, (l + r) / 2, x);
            update(a, b, k * 2 + 2, (l + r) / 2, r, x);
            seg[k] = min(seg[k * 2 + 1], seg[k * 2 + 2]); //区間のmin
        }
    }  
    ll query(int a, int b, int k, int l, int r){
        lazy_evaluate(k, l, r);
        if(r <= a || b <= l) return INF;//minの影響のないもの
        if(a <= l && r <= b) return seg[k];
        ll x = query(a, b, k * 2 + 1, l, (l + r) / 2);
        ll y = query(a, b, k * 2 + 2, (l + r) / 2, r);
        return min(x, y); //左右のminを
    }
    //update(a,b,x) := [a,b)を全てxを加える
    void update(int a, int b, int x){update(a, b, 0, 0, SIZE, x);}
    //query(a,b) := [a,b)に対する最小値を求める
    ll query(int a, int b){return query(a, b, 0, 0, SIZE);}
};

int l[100010], r[100010], x[100010];
int s[100010], t[100010], k[100010];
vector<pair<int, int> > add[100010], del[100010];
vector<int> query[100010];
int main(void){
    int n; cin >> n;
    vector<int> a(n); rep(i, n) cin >> a[i];
    int A; cin >> A;
    //a[i]のi列に対しての処理ごとにリスト化
    rep(i, A){
        cin >> l[i] >> r[i] >> x[i];
        add[l[i]].push_back(make_pair(i, x[i]));
        del[r[i]].push_back(make_pair(i, x[i]));
    }
    int B; cin >> B;
    //a[i]のi列に対しての処理ごとにリスト化
    rep(i, B){
        cin >> s[i] >> t[i] >> k[i];
        query[k[i]].push_back(i);//ai列目に対するクエリが何個目のクエリなのか
    }

    ll ans[100010];//ans[i] := i番目のクエリに関する答え
    segtree st(A + 1);
    //a1列からan列へ順番に見ていく(それぞれの列の初期値は無視して、増加現象部分のみの列としてみる)
    for (int i = 1; i <= n; ++i){
        st.update(0, 1, 0);
        for(auto u : add[i]){
            st.update(u.first + 1, A + 1, u.second);//[u,A)まで加算
        }
        for(auto u : query[i]){
            ans[u] = a[k[u] - 1] + st.query(s[u] - 1, t[u] + 1);//初項と範囲の最小値
        }
        for(auto u : del[i]){
            st.update(u.first + 1, A + 1, -u.second);//[u,A)まで減算
        }
    }
    rep(i, B){
        printf("%lld
", ans[i]);
    }
    return 0;
}

大喜利のお題

ひとこと

 

スポンサーリンク

 

Share photos on twitter with Twitpic

f:id:meteo:20140524180505j:plain

劇場版ガイムの敵ライダーで片岡愛之助さんが出演することになりました!

変身するライダーはマルスです!

変身シーンが歌舞伎風になってるんだそうです

END

A級品は高いけど、ちょっと我慢すればとんでもなく低コストで済む時代である。
例えば以下のような感じだ。

音楽CDの代わりに配信サイトで好きな曲を個別に買えるからアルバムの存在価値が激減してしまっている。
それよりも聴きたい曲をYouTubeで見れば簡単に聴ける。
僕に関しては、ここ十年は音楽に疎いせいもあってほとんど配信サイトで買ってすらおらず、昔からPCに落としている1万曲程度の曲とインターネットラジオばかりを聴いているのでもっとカネを使っていない。

映画館ではたまに3DXとか4DXで倍のカネを払って観ることもあるが、1,800円を払って今観る価値があるものか、レンタルビデオ等では出なそうな映画以外は観なくなっている。
amazonプライムやネットフリックスやレンタル(レンタルビジネスも海外では淘汰中)を利用すればとんでもなく廉価だ。

本はただでさえ、ネット情報で十分といって本を読む人が減っているなか、書店の売り上げ冊数を図書館で借りられる冊数が上回る有様。
仮に、低コストで済むkindleが半額で本を出すと言って出版社がこれに応じ始めたら本屋は減ってしまうのだろうが、それは本を吟味する場所を失うことにもなるから恐ろしい。
個人的には月額980円の定額サービスであるKindle Unlimitedにサービス開始と同時に加入してから読書量がさらに増え、紙の本を買って本屋に貢献しなければと思いつつも買う冊数が激減した。
図書館とブックオフの利用も激減した。
ネット上のクソ情報を見るよりKindle Unlimitedで適当に本を探して読んだほうがマシと思ってそうすることが多いので僕の生活自体が変化したと言っていいかもしれない。
ちなみに、本はkindleでもデカいPCモニタでも読めるから本当にありがたい。
正直、このサービスのおかげで図書館のない田舎に住めるかもと思ったぐらいだ。

雑誌に関しては月額400円で160誌が読み放題のdマガジン(僕は使っていない)は携帯電話で読むには小さいがPADサイズの端末を持てば問題が一瞬で解決してしまう。
Kindle Unlimitedでもかなり読める。
書店にとって由々しき事態である。
出版社にとっても定額制が根づくとやがて紙の雑誌を買う人がいなくなるだろうから、タコが自分の足を食べているようなものとも思う。

新聞に関してもインターネットで情報を得られるため読まない人が加速度的に増えている。
強制的に紙が届くから見ざるを得ないのと、自分では読みにいかないような記事の見出しも視界に入る作りになっているのと、見出しの大きさで記事の価値を判断できるという3点が紙の新聞の長所で、この長所があまりにも際立っているから僕は新聞を取り続けているのだが、何といってもインターネットの情報はタダ。
なんだかんだ言ったところで情報の質に関しては新聞社と通信社のものが圧倒的なのだが、紙の新聞が立ち行かなくなったら新聞社自体が立ち行かなくなってしまうし、そうしたらニュースを提供する側の質も劇的に落ちることになる。
若い人の購読率の異常な低さを考えると新聞の未来は怖い。

ところで、試しに読売新聞と産経新聞の電子版を試してみたら両方ともかなり見辛い(特に読売はバカデカと極小の2サイズでしか表示できず驚きのユーザビリティの低さ)のですぐに購読を止めたのだが新聞社が本気で工夫をしてパッドサイズで見やすい電子新聞を出すということも考えられなくもない。
電子版を見やすくして紙離れを起こしてしまったら衰退のスピードが劇的に早まることぐらいわかっているからそうすることはそうそうないだろうけども。
関係ないけど僕は日本の新聞がタブロイドサイズでなくブランケットサイズであることが前から不満である(笑)。

ゲームも無料のものが多い(ゲームは全くやらんからよく知らんが)。
個人的には課金なんてされたら一気にドン引くのだが、ゲーム会社はそれで儲けるしかなくなってきている。

買い物に関しては小売店で見てkakaku.comやアマゾンや楽天などで買うパターンが定着してしまうと小売店はただのショーケースになってしまう。
商品ごとに、店舗不動産コスト+店員の給与と、棚管理コスト+配送コストの安いほうが勝つドロ沼の戦いとなるわけで、これが定着しすぎると世の中全体に与える影響は絶大である。

服に関してもそうで、材料費に大きな違いがあるとは思えず、アパレル業界は価格に占めるマージンの差があまりに大きな業界である。
従来ブランドとほとんど同じようなデザインの服がユニクロから出ることが多いが、そういう場合には多くの庶民はユニクロで済ます。
ユニクロのこのところの進化は言うまでもないが、見る目さえあればユニクロでもそれなりのコーディネートに仕上げることができるようになってきている。
しかも、ユニクロの品質には間違いがない。
また、ネット上に寸法を入力して最適な服を買える時代になっているのだから、不況にあえぐアパレル各社はさらに戦々恐々だろう。

旅行もあれだけYouTubeやテレビ番組等で画像を見られるようになったらバーチャルで十分という人も出るだろう。
何せ旅行ほど苦労と疲れが多い遊びもそうそうないのだから。
ちなみに、僕はシベリアの辺鄙な街の名前なんかをグーグルで検索して画像を見て楽しむのが大好きだったりする。
僕はそれでも旅に出るが皆がそうとは限らない。
旅で手に入るかなり大きな要素に嗅覚というものがあるが、これは現地でしか嗅ぐことができない(笑)。

エロに関しても、リアルな努力はとんでもない苦労と楽しみを与えてくれる(た?)が、ネット全盛の時代になり、無苦労・無コストで自分の青春時代には考えもできなかったような非合法(?)コンテンツが垂れ流され続けている。
これでは苦労して面倒くさいことをしたくないという人が増えてもいたし方ない。
しかし、ここまで無料で手に入ってしまうと作る側も全くペイしなくなるだろうから、そういう意味では供給側が耐えられなくなって衰退しちゃうんじゃないの?とも思う(笑)。

結婚して子供なんていたら見返りや意義は絶大であろうと人生の相当な期間が苦労ばかりになるのだが、それを避ければその長い期間が楽ばかりになるのだから恋愛や結婚や子供を持つことを避ける向きがさらに増えても少しも不思議ではない。

正直、バーチャルや代替手段で済ませられないのは食事ぐらいかもしれない。
あっ、食事すら廉価で美味いものがいくらでもある世の中だった。

これだけ生活コストや欲求を満たすためのコストが低コストな社会になれば時間を犠牲にしてまでの金銭欲は失せると思う。

鼻歌

2018/03/10

鼻歌とは

気分の良い時などに、口を閉じたまま小声で歌うこと。

 

最近、鼻歌を歌ってますか?

私は家事と育児に追われ、嬉しい事は多々ありますが鼻歌を歌う余裕はなく生活しています。

 

今回この事を書こうと思ったのが娘ちゃん(一歳9ヶ月)が大好きな食パンとヨーグルトを前に鼻歌を歌っていたからです。

f:id:mamagokorochan:20170214080052j:image

なんて純粋な鼻歌

ヴィタール

2018/03/10

塚本晋也監督の映画。
事故で記憶を無くした男が同じ事故で死んだ恋人を解剖する
といった話。
なかなかグロくて心地よい。
死体って黄色っぽいんだ、とか思ったり。

ヴィタール スタンダード・エディション [DVD]

ヴィタール スタンダード・エディション [DVD]

  • 出版社/メーカー: ハピネット・ピクチャーズ
  • 発売日: 2005/06/24
  • メディア: DVD
  • 購入: 1人 クリック: 16回
  • この商品を含むブログ (67件) を見る

グランドプレジデントホテルバンコク
GRAND PRESIDENT HOTEL BANGKOK

 

国:タイ
都市:バンコク
エリア:スクンビット、ナナ
通り:スクンビット・ソイ11
最寄り駅:BTSナナ駅

 

f:id:stak2012:20170519235508j:plain

 

f:id:stak2012:20170519235517j:plain

 

f:id:stak2012:20170519235528j:plain

 

グランドプレジデントホテルバンコクから
ニューペッブリー通りまで約1.2Km
BTSナナ駅まで約310m
プルンチットセンターまで約660m
BTSプルンチット駅まで約890m
セントラル・エンバシーまで約1.2Km
ターミナル21まで約820m
BTSアソーク駅まで約790m
MRTスクンビット駅まで約1Km
バムルンラード病院まで約780m
※直線距離ではなく通行可能な通りを歩いた場合の距離です

 

 

 

【グランドプレジデントホテルバンコク周辺地図】