草体にぼ日記

だらだらと

2020年4月12日 日記

2020年 4月 12日 日記

健康管理

布団を2枚かぶせたからかわからないけど,悪夢を見た。そのため気分は-1。まぁ幸せなので負極にはしていない。
睡眠時間7:00 ~ 13:00 途中起きありの5h30mくらいの睡眠かな。お昼寝してるしまぁ許されそう。

まえがき

今日はコンテストがありますが最近は読書にハマってしまったので,エンジニアの知的生産術を読みます。競プロの精進はちょっとだけペースを落とす。もしくはサボります。
多分今日のコンテストでレートが冷えたら焦ってやるかも・。・

今日の予定はこんな感じです。


ちなみに,過去6日分ぐらいの精進録は次の画像。

こんな感じっすぅ。。。

何した

  • エンジニアの知的生産術4章をやっと読み終わった 結構時間かかっちゃった。でもまぁ,時間かけただけあって有意義な時間が過ごせたかな。
    5章以降を読むときはもうちょいサクサク進めたい。
    その章,小見出しのところからなにを疑問として読み進めるのかを意識する。
  • ブログに,今やっている本の読み方を書いてみた(下の方にあるよ) 自分用の記録として。というのと他者からアドバイスをもらえるかな〜っていう期待を込めて。


本の読み方

今やってるエンジニアの知的生産術の読み方を適当に書いていきます。 1. まず,読むと決めた章の名前と,目次を書いていく。 2. その紙を手元に置いた状態で読書を始める。 3. 小見出しを見て「あ,これ知りたい」とか「疑問」をメモしておく 4. 個人的にいいなと思ったところを付箋に書いて読書ノートにペタペタ貼り付けていく。 5. ノートに貼り付けた内容から,ブログに読書録として「こういう内容だった〜」って感じで日記に書く。

大体コンな感じで読書に取り組んでいます。作業風景の画像貼りますね。


コメント添えて行きます。 まず1の目的は「読んでいる章でなにを伝えてくれるのかをざっといつでも把握できるように。」というのと「今どこを読んでいるのかを常に把握することで,後どれくらいで読み切る。」みたいな地図を頭に入れておく。

2は,ただ地図をいつでも見れるようにしておく。ということ。
3は,本に対して問題意識を持つことで「自分の問題解決のために読む」というふうに集中力,やる気を上げるため。になりそう。後,その目的を達成するために読むぞ。っていう意識も芽生えるし。
4は,あとで見返したときに読んだところを振り返るきっかけになるから。かな
5は,アウトプットをすることで頭の中が整理されてより身につきそうだから。

ちなみに,これは色んな本を読んでなんとなくこうするか。って言って昨日今日とやっていることなので,また変わる可能性はあります。

今日解いた問題

ABC162のDまで解きました

ABC162 A- Lucky7

[桁の値]

int n;
cin >> n;
while(n > 0){
    if(n % 10 == 7){
        cout << "Yes" << endl;
        return 0;
    }
    n /= 10;
}
cout << "No" << endl;

ってやったけど,早い人のコードもみてみるか。 string n; cin >> n;


ふむ,findを浸かっているね。なるほど でも良さそうだな〜(ぼんやり)

ABC 162 B- FizzBuzz Sum

[全探索,FizzBuzz]
Nの値が106までなので,全部見ればいいっすね。

ABC162 C- Sum of gcd of Tuples(EasY)

[全探索,最大公約数]

ABC162 D- RGB Triplets

[数え上げ,組み合わせ(?),条件]
中々面白い問題ですね。これが速く解けるか解くのに時間がかかるかで蒼perf ~ 緑perfまで変動するみたいです。にゃーん
とりあえず,RGBそれぞれの数を数えてあげましょう。
RGBしか存在しないというのがありがたいですね。(このありがたさに気がつくまで5分位かかりました)
そして,RGBがr個,g個,b個あるとしたら,単純に3つ選んだ文字が全部違うのであれば,r×g×bが答えです(Rはr個中から1個選ぶ,Gはg個の中から…)
しかし,iとj,kの間に制約が存在するので,iとjの距離とjとkの距離が一緒のときに文字がRとG とBを選んでいるのであればそれを引いてあげないといけません
今回,N = 4000 なので,Nの2乗はトオルね。
さて,ルール違反となるi,j,kの選び方ですが,iとjを決めたらkの値は2× j - i と決まります。 このi , j , k にたいしてs[i],s[j],s[k]が全部違う文字だったら,r * g * b から1ずつ引いていく。
的なノリ

int main()
{
    int n;
    cin >> n;
    string s;
    cin >> s;
    vector<ll> rgb(3,0); // R , G , Bで数を入れる
    rep(i,n){
        if(s[i] == 'R') rgb[0] ++;
        else if(s[i] == 'G') rgb[1] ++;
        else rgb[2] ++;
    }
    ll ans = rgb[0] * rgb[1] * rgb[2];
    rep(i,n){
        for(int j = i + 1; j < n ;j++){
            int k = j * 2 - i;
            if(i == j || i == k || j == k) continue;
            if(s[i] != s[j]){
                if(k < n){
                    if( s[j] != s[k] && s[k] != s[i]){
                        ans --;
                    }
                }
            }
        }
    }
    cout << ans << endl;
}

あとがき

なんか,寝て起きてからねむねむしていると,目をつむっている状態でTwitterをしてしまいます。 TLを見ていないのに頭の中に人のTweetが浮かんできます。
病気っすかね。

以下は毎回記事に貼っているテンプレート

基本的に読書はTwitterで絡みのある人だけだと思いますが、僕のブログだけ見てるって人もいるかもしれないので、一応自己紹介っぽいことをしている記事を貼っておきます - 瑞々しぃにぼしの自己紹介(自己紹介の記事です)