苦しくつまらない日常を楽しく生きる

おはようございます。

今日は日曜日ですが、左手の強烈な痺れと痛みによって、4時前に目覚めてしまいました。どうせ明日からは早番の週なのでちょうど良いですが。

さて、タイトルにある陰鬱な「苦しくつまらない」ですが、あまりネガティブな意味で書いたのではありません。むしろ、苦しくつまらないというのは生活の型に上手くフィットしているということだと思うのです。

人間はキャパオーバーなこと(仕事、勉強、運動にしても)をやっても上手くいかないものです。逆にあんまりに楽勝なことだけをやっていても、達成感もなく、成長もありません。

(程よく)苦しくて(程よく)つまらない仕事というのは、いい塩梅の仕事ということです。それをやっている限り、大きなミスなくやっていけるし、それなりに自分で改善したりしつつ成長もできるはずです。

しかし、今日は日曜日ですから、今日くらい楽しくいきたいものです。ちなみに人間はある程度の難しさを伴うことを楽しく感じるみたいなので、そんなことをやるのがいいでしょう。

例えば、ゲームなんかも簡単すぎても全く面白くないですよね。マリオでクリボーが一体も出てこなかったらつまらないです。勉強もそうです。数学は好き嫌いが分かれる科目ですが、好きな人は程よい難易度の問題について考えています。嫌いな人は(自分にとって)難しすぎるか簡単すぎる問題ばかりやっています。その問題に必要な公式を知らずに解くのは非常に困難でそしてつまらないです。また、公式を単純に当てはめるだけの問題も最初は必要ですが、すぐにつまらなくなります。この法則は全てにおいて適応できそうです。

日常を楽しくするアイデアを挙げてみましょう。

  • 普段作らない料理を作って食べてみる。
  • 普段話さない人に話しかけてみる。
  • 普段行かない場所に行ってみる。
  • 普段車かバスなどで行っている場所に歩いて行ってみる。
  • 普段見ない番組を見る。
  • 普段聴かない音楽を聴いてみる。
  • 普段読まない雑誌を読んでみる。
  • 普段買わないものを買ってみる。
  • 普段より早くお風呂に入ってみる。

無限にあります。全てが楽しく感じられるわけでもないでしょうが、休日くらいは普段しないことをやってみると、だんだん自分が楽しめることは何かがわかってくると思います。

苦しくつまらない現実は存在するかもしれませんが、主体的に楽しくするのは可能です。

では良い休日を。

肉体労働者の休日の過ごし方

どうも、プリズムです。自動車関連の工場でライン工やってます。

みなさんが肉体労働者の休日と聞いて思い浮かべるのはなんでしょうか?

  • パチンコ
  • 酒タバコ

あたりでしょうか?

はじめに言っておくと、そんなことをしていると惨めな末路を辿ることになってしまいます。工場や現場作業者などの肉体労働者こそ、スポーツなどの健康的な娯楽で余暇を楽しむべきなのです。

しかし、現実には、日々の疲れからか、多くの肉体労働者が先に挙げたような不健康な娯楽で暇を潰しているようです。

まずはタバコをやめよう

私が工場で働くようになって驚いたのは、喫煙者の多さです。10分しかない貴重な休憩時間も遠く離れた喫煙所まで歩いて行って吸っています。私はその間にKindleで本か漫画を読んでます。いつも思うのは、肉体労働者こそタバコを止めるべきなのに!ということです。

喫煙をすると、身体的なパフォーマンスが落ち込むことは広く知られています。特に持久力の面では顕著ですね。

さらに、もう一つ、肉体労働者がタバコを止めるべき理由があります。それは貧困からの脱出のため。タバコは一箱400円程度。今後はもっと値上がりするでしょう。

毎日一箱吸っている人は400 x 30 = 1万2000円を一月にタバコにかけていることになります。1年で約15万円です。

私が以前読んで紹介した本(

【書評】藤原和博の必ず食える1%の人になる方法 読んでみたよ - ニートからはじめるプログラミング

)でも、稼げる人食える人になるには、まず禁煙だと書いてありました。

それだけじゃないです。タバコの健康への影響は多大なるものです。肺がんのリスクは4.5倍、咽頭がんは5.5倍です。医療費はバカになりません。私のヘビースモーカーの父も下咽頭がん食道がんになって休職中です。

働けなくなり、高額な医療費、療養費を払い続けるリスク。あなたもそうなっていいんですか? 周囲の人物には確実に迷惑がかかってしまいます。

ただでさえ賃金の安い(若い間は一時的に周りの大卒者より高かったりしますが)肉体労働者はお金をためて、すぐにでも資産運用すべきなんです。

とりあえずタバコはやめましょう。

とにかく朝15分走れ!

命令形ですいませんw

でも健康のためなので。とにかく朝日を浴びて走ってください。なぜ朝なのか。それはセロトニン分泌のためです。セロトニンは人間が幸福感を感じるために必要な物質です。

ちなみにうつ病になる人も、セロトニン不足が原因なのだそうです。なぜセロトニンが少なくなるかは完全にはわかっていないようですが、精神科医の樺沢紫苑先生も朝日を浴びて散歩することの重要性について語っています。以下の動画の2分過ぎあたりからです。うつ病患者に対して語った言葉ですが、普段工場内で日光を浴びる時間が足りていない工場勤務者は特に必見です。

www.youtube.com

読書か勉強

肉体労働に知識は必要ない。なんて言って、勉強を避けていると、どんどん底辺街道を突き進むことになってしまいます。

特にこれまで勉強してこなかった人も多いと思いますが、勉強をすると世界が広がり、選択肢が増えます。

普通に興味を抱いた本を読むもよし。資格の勉強でもいいです。とにかく能動的に人生を変えていくことが大切です。

最近読んで面白かったのは

 

貧困脱出マニュアル

貧困脱出マニュアル

 

です。DV父の元で壮絶な幼少期を送り、貧困に苦しんだ筆者が、肉体労働でお金を貯めてアメリカの大学に入学し、英語とスペイン語の翻訳家として、第一人者となるまでの経験や周囲の多種多様な交友関係から学んだ貧困脱出のノウハウが惜しみなく書かれています。

もしこれを買う金がない人は言ってください。アマゾンのほしい物リストをメールしてくれたら私が買います。

ちなみに資格でおすすめは電験公認会計士です。理由は簡単。身近に知っている人で高卒かつ高収入の人がいるので。会計士は大学中退フリーターでした。

 

まとめ

長々と綴りましたが、労働者にとって休日こそ人生改革のチャンスなんです。無駄にはできないですね!

ここまでお読みいただきありがとうございました!では次回!

NISAで投資を始める底辺労働者

どうも、ご無沙汰です。プリズムです。

突然ですが!このブログは運用成績報告ブログに変容します!(これまで通りプログラミング関連もやりますが)来月から毎月1日に先月分の運用成績を公開します。

最近はいつも仕事を辞めることばかり考えています。やはり、自動車部品を製造するライン工には憲法でいう健康的で文化的な生活など保証されていないんですねw

漫然と働いても現状は一生変わらない

そこで、とっととこんなクソみてぇな生活を脱するために、株でも始めようかと思いまして、最近話題のNISAとやらで株を始めることにいたしました。

年間120万円までが非課税になるあれですね。5年間非課税になるので120x5=600万円分の売却益や配当金が非課税になります。

通常株取引では利益に対して20%課税されるのが0になるんですから凄いですよ。

口座の開設方法は簡単。

  1. 証券会社に口座開設する(普通に課税されるやつ)。
  2. 次に証券会社にNISAの申請書を資料請求する。
  3. 申請書に必要な本人確認書類を添付して郵送。あとは待つだけ。

自分は父親が利用していて、紹介制度を活用したかったのでSBI証券で開設しました。

実際儲かるの?

もし100万円だけ投資したとしても、年利回り5%(年間5%増えるように)で運用すれば、5年後には 100 x (1.05)^5 = 約127.6万円 なので、27万6千円増える!

10年だと約163万円になるので、やるほかないですね!

しかも働きながら投資を行っていれば、100万円から買い増すことも可能なので、運用額を増やして、利益を増やすことも可能ですよね。

年利5%なんて無理でしょう。そんなうまくいくはずない。なんて思っている人もいるかもしれませんが、そんなこともないです。投資信託といって、プロにお任せしちゃうタイプの投資であっても、年利5%どころか10%超えている商品もあります。

ともかく、なんでも否定せずに検討してみることが肝心でしょう。

今後の計画

今現在(2019.11)、自分の預貯金が180万円で初期投資額を50万円前後で考えています。

実は今年分はジュニアNISA(今20歳だが今年1月時点で19歳だった)なので、非課税枠が80万円までで、今年はそれ以上投資することはないでしょう。

今月末に先月分の給料が入れば、貯金も200万は超えるので買い増しするかも。

 

底辺脱出に向けて頑張るぞい!

【書評】藤原和博の必ず食える1%の人になる方法 読んでみたよ

どうも、プリズムです。

今日は珍しく書評なんかやっちゃおうと思ってます。

購入までの経緯、きっかけ

f:id:k_prism:20191016001253j:plain


今回私が読んだのは「藤原和博の必ず食える1%の人になる方法」という自己啓発本(でいいのかな?)なんですが、きっかけは知人から薦められたことでした。

なんせ自分は工場の派遣労働者という身で、正直全く面白みのない仕事を9、10時間やってるわけですが、そんな中、お前本当そんなんでいいんか?みたいな感じでこの本を紹介されました。

多少ムカつきますよねwでも事実納得していないのはそうだし、本屋で立ち読みすると読みやすかったので購入しました。

内容ザッと

まず、この本の趣旨ですが、特に秀でたところのない凡人が、時間をかけることによって100人に一人、さらには100人に一人のスキルを掛け合わせて1万人に一人の逸材になろうということです。

ではどのようにして、そんなことが可能なのか。

最初はパチンコとソシャゲを止めることw

確かにこれを止めるだけで全人口の上位1/4にはなれます。その本ではパチンコをやめれば1/2にソシャゲでさらにその1/2で1/4になれるというように、2べき分の1の人間にどんどんなっていって、条件を7つクリアすると1/128で100人に1人になれると主張してありました。

ちなみに条件1と2はパチンコソシャゲで3は本を月1冊読むこと。これまでは共通です。

それ以降は、目指すライフスタイルによって変わってきます。

経済的価値を求めるか否か、権力志向か独立志向かで4つの目標スタイルを分類して、それぞれがクリアすべき条件が説明してあります。

f:id:k_prism:20191016001315j:plain

果たして自分は何タイプなんだろう

まず分かるのは、Cではないということ。地域の集まりや親戚の集まりを何も生産性のないクソコミュニティだと思ってしまうのでw

あとAでもないと思います。会社経営には関心があるのですが、いわゆるサラリーマン社長になることには関心がありません。

となると、どんだけお金を重視するか。ですが、私はお金大好き人間です。なのでBかな。多分、起業家とか目指していたりすでに起業してる人もBに分類されるのではと思います。

そこでとりあえずBタイプ(自営業者)を重点的に読んだところ、

  • まず会社内で専門性の高い人材になる
  • 無駄な時間(接待など)をやめて、1万時間をスキル獲得のためにあてる
  • 本読め
  • あらゆる媒体を通してなるべく有名になる
  • 孤独を楽しむ。たまには仕事ほっぽりだして遊ぶ

みたいな感じです。ごもっとも!

まとめ

筆者の藤原さんはリクルートから中学校校長という異色の経歴の持ち主であり、その経験の中でのエピソードも面白いです。人脈も豊富で、隈研吾さんとご友人なのは驚いた。

特徴的なのは、目指す成功を4タイプに分類して、それぞれのアプローチをとったところじゃないでしょうか。今まではカネカネのがっついた本が多かったので、なんか自己啓発本ビミョーだと思ってた人に読んでもらいたい本です。

c++ の next_permutation() 使ってみた

どうも、プリズムです。
昨日のAGCは熱があって出れませんでした。

それで今日は少しは問題解こうと思って解いてみていたら、初めてnext_permutationを使う問題に遭遇。ちょっとしたまとめです。

問題

C - One-stroke Path
概要は重みなしグラフが与えられて、始点は1ですべての頂点を1度だけ訪れるようなパスの数を求めよ。って感じです。

解法

制約を見てみると(本当に大事)、N<=8なので全探索だろうなぁと分かるわけです。
しかも始点が決まってるので、全探索の範囲も7! = 5040(通り)しかないわけで。

そこでその探索の方法は、2~Nまでの順列を全列挙して、その順で訪れることができるものの数を数えればいい。
next_permutation() は {1,2,...,N-1,N}から昇順に数列を求めることと、最後の数列を生成したらときにのみfalseを出すことに注意すれば、実装も簡単。

提出コード

#include<bits/stdc++.h>
using namespace std;
#define rep(i,N) for(ll i=0;i<N;++i)
typedef long long int ll;
 
ll N,M;
vector<vector<ll> > Edge;
vector<ll> v;
 
bool search();
 
int main(){
    cin >> N >> M;
    Edge.resize(N);
    v.resize(N-1);
    rep(i,M){
        ll a, b; cin >> a >> b;
        a--; b--;
        Edge[a].push_back(b); Edge[b].push_back(a);
    }
    rep(i,N-1) v[i] = i+1;
 
    ll res = 0;
    if(search()) res++;
    while(next_permutation(v.begin(),v.end())){
        if(search()) res++;
    }
    cout << res << endl;
}
 
bool search(){
    int now = 0;
    bool ok;
    rep(i,N-1){
        ok = false;
        for(auto it : Edge[now]){
            if(it == v[i]){
                ok = true;
                now = v[i];
                break;
            }
        }
        if(!ok) return false;
    }
    return ok;
}

2交代勤務者の憂鬱

どうも、プリズムです。

以前言っていたように(知らんがな)、私は某自動車関連の工場で派遣として働いておりまして、そこの勤務体系が週ごとに日勤(6:00-15:00)と夜勤(16:00-翌3:00)みたいな感じなんですね。基本週五勤務で残業もあります。

ひどい時は毎週土曜も休日出勤みたいな時もあります。

そんな中、疲れは溜まるわけですが、なんとか強く生きております(笑)。

 

 

こんな感じで(笑)。

 

そんな中での楽しみといえば、ビールとご飯ですね。

f:id:k_prism:20190930004802j:plain

これは近所にある大久ラーメン。吉野ケ里歴史公園の近くにあるので、寄ってどうぞ。

f:id:k_prism:20190930004927j:plain

ビール(発泡酒(第3のビール))!!

 

あと今日は以前、カルディから購入していた謎料理を作って食べました。

f:id:k_prism:20190930005133j:plain

背景が汚い。

 

以上!!

ABC138 D - Ki (400) DFSとBFSで解く方法

問題リンク

atcoder.jp

方針

カウンターに足されるxのことを仮にcostと呼ぶことにして、最終的に頂点iに足されたcostの総和をcost[i]とすると、そのcost[i]は、根から近い方からiを見ていって、その親を足していけばよい。

根から近い方から見るので、DFSかBFSで実現できる。

提出コード

DFS

#include<bits/stdc++.h>
using namespace std;
#define rep(i,N) for(ll i=0;i<N;++i)
typedef long long int ll;

int N,Q;
vector<vector<ll> > G(200010);
vector<ll> cost(200010);
vector<bool> visited(200010,false);

void dfs(int v, int pv){
    visited[v] = true;
    if(v != 0)cost[v]+=cost[pv];
    for(auto nv: G[v]){
        if(visited[nv] == false) dfs(nv, v);
    }
}

int main(){
    cin >> N >> Q;
    
    rep(i,N-1){
        int a,b; cin >> a >> b;
        a--; b--;
        G[a].push_back(b); G[b].push_back(a);
    }
    
    rep(i,Q){
        int a,b; cin >> a >> b;
        a--;
        cost[a] += b;
    }

    dfs(0,0);
    rep(i,N-1) cout << cost[i] << " ";
    cout << cost[N-1] << endl;
}

BFS

#include<bits/stdc++.h>
using namespace std;
#define rep(i,N) for(ll i=0;i<N;++i)
typedef long long int ll;
 
int N,Q;
vector<vector<ll> > G(200010);
vector<ll> cost(200010);
vector<bool> visited(200010,false);
 
void bfs(int s){
    queue<int> que; que.push(s);
    visited[s] = true;
    while(!que.empty()){
        int v = que.front(); que.pop();
        for(auto nv: G[v]){
            if(visited[nv] == false){
                que.push(nv);
                cost[nv] += cost[v];
                visited[nv] = true;
            }
        }
    }
}
 
int main(){
    cin >> N >> Q;
    
    rep(i,N-1){
        int a,b; cin >> a >> b;
        a--; b--;
        G[a].push_back(b); G[b].push_back(a);
    }
    
    rep(i,Q){
        int a,b; cin >> a >> b;
        a--;
        cost[a] += b;
    }
 
    bfs(0);
    rep(i,N-1) cout << cost[i] << " ";
    cout << cost[N-1] << endl;
}