f:id:shinke1975:20170108220320j:image

昨日の鳥もも炒めが残っていたので使っていきましょう。 

 

 

f:id:shinke1975:20170108220331j:image

このような物も残っていたので使っていきましょう。

 

 

f:id:shinke1975:20170108220340j:image

このような物になるのでしょう。

 

 

f:id:shinke1975:20170108220351j:image

湯が沸いたら茹でるルール。

 

 

f:id:shinke1975:20170108220400j:image

みんなチーズが大好きでしょう。

 

 

f:id:shinke1975:20170108220422j:image

味見して塩調整。

ちょっと酸味丸くしたいなっつって牛乳入れてみようと思ったら在庫切れだったでしょう。

 

 

f:id:shinke1975:20170108220432j:image

パスタが茹で上がったら絡めるルール。

 

 

f:id:shinke1975:20170108220445j:image

でしょう。 

 

 

f:id:shinke1975:20170108220457j:image

粉チーかけて頂きましょう。

不味いわけがない。

ただし鳥ももにしっかり味が付いていたので、最後ソースに塩追加はいらなかったかもしれない。 

鳥ももがなかったら丁度良い塩加減なのでしょうだがしかしそれ故に。

前向きに反省しましょう。

ご馳走様でしょうでした。

 

 

f:id:shinke1975:20170108220653j:image

ちなみに今使ってるパスタ。

 

 

f:id:shinke1975:20170108220702j:image

食べ応えあって嫌いではないけど、もうちょい細くても良いかも。

もうちょい細くて固茹でが素敵かもしれない。

結局1.6ミリくらいに落ち着くのだろうか。いろいろ試していきたいでしょう。

河口湖1日目

2018/07/06

今日から河口湖で某仕事 9:00入りする為に家を出たのは5:20 こんな時間やのに駅の乗換でみんな走ってる〜! ちょっと早く着いたんで駅で吉田うどんを食べてみた IMG_0131.jpg ゆでキャベツとニンジンにきんぴらゴボウ 微妙でした・・・ 初日が終わってホテルに行ったら・・・かなり古い・・・ 部屋に入ったらカビ臭い・・・ ここで今日から4泊も出来るだろうか・・・

7/25、山形県長井市、ラーメンななやに行ってきました。
2回目。(→前回)


f:id:kazu_ma634:20151028231854j:image:w400
f:id:kazu_ma634:20151028231855j:image:w400
f:id:kazu_ma634:20151028231856j:image:w400
油そば
すりおろしにんにくがいいアクセント。


tabelog.com

新しい企画始めます。

 

その名も、

 

俺が選ぶ!名フレーズ

 

です。

 

まあマンガであったり、映画とかドラマであったり、有名人であったり、はたまた知り合いの人であったりの言葉を厳選して、それについて考察するって企画。

 

俺が前々からしたいなーって思ってたやつ。

みんなの役に立てる言葉をバンバン紹介していきたいので、みんなぜひ楽しみにしといて。

まじで。

jasiklal

2018/07/03

http://www.pencelgames.com/content/livetvdjokovic-vs-berdych-live-streaming-quarter-final-rogers-cup

[[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