20200713

本日できたえらいこと
 ・仕事をした
 ・休日の予定が立てられた
 ・作り置きの料理が食べられた(晩御飯を外で食べなかった)
 ・タバコ吸いたい衝動に駆られたが買わなかった
 ・洗い物ができた
 ・ふるさと納税の申請ができた
 ・ブログが書けた
 ・夜にお風呂に入れた

聖地巡礼(兵庫県西宮市)_涼宮ハルヒの憂鬱(準備中)

【日時】

2018年XX月XX日(X)〜2018年YY月YY日(Y)

 

【宿泊地】

大阪マリオット都ホテル

 

【場所】

兵庫県西宮市

 阪急電鉄 西宮北口駅

 阪急電鉄 甲陽園駅?

 

【目的】 

 1.涼宮ハルヒの憂鬱の聖地を巡る。

   →半年前から仕事中に無性に行きたくなってきていた。

    高校時代にハマったものを懐古したい。

 2.会社の福利厚生を使う。

   →福利厚生で旅費が安くなるのがあるので、それを使う。

    せっかくなので使い倒したい。

 3.その他

   →他に何か・・・・?

    ホテルが素晴らしいので、そこで休むのでも大変良い。

 

【出発前のやること】

 1.旅券とホテルのチケットを予約する。

   →とっととやる。

 2.涼宮ハルヒの憂鬱を全話見返す。

   →思い出さなきゃ!

 3.聖地巡礼の他サイトを回る。

   →情報はとっても大事。

 

ちまちま更新するかな

AtCoder Beginner Contest 092_B - Chocolate

また解けなかった。。。。。

問題に記載されている例題はあっていたが、結果がダメだった。

REやWAが出ていた。。。。。

ここまで出来たのが40分だったから、少しは成長したかなとか思ったけどダメだった。

また頑張る。

 

〜〜〜〜〜〜〜〜以下、ダメだったやつ〜〜〜〜〜〜〜〜〜〜

#include <iostream>

using namespace std;

 

int main (){

    int ans = 0;

    

    //参加人数

    int N;

    cin >> N;

    

    //合宿日数、余ったチョコレート

    int D,X;

    cin >> D >> X;

    

    int array[D];

    for (int i = 0; i < N; i++){

        cin >> array[i];

    }

 

    for (int a = 1; a <= N; a++ ){

        for(int b = 1; b <= D; b += array[a - 1]){

                ans += 1;

        }

    }

    ans += X;

    

    cout << ans << "\n";

    return 0;

}

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

以下、答え見てACになったやつ〜〜〜〜〜〜〜〜〜〜〜〜〜〜

#include <iostream>

using namespace std;

 

int main (){

    

    //参加人数,合宿日数、余ったチョコレート

    int N,D,X;

    cin >> N >> D >> X;

    int ans = X;

    

    for (int i = 1; i <= N; i++) {

        int A;

        cin >> A;

        

        for(int b = 1; b <= D; b += A){

            ans += 1;

        }

    }

    

    cout << ans << "\n";

    return 0;

}

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

いつも入力を格納(配列)してから色々やってたけど

一回一回受け付けるやりかたもあるのかと新しい発見!

やりかた自体は間違ってなかったけど、余計なことしたから

バグを作っちゃったんだろうな。

次回も頑張ります。

 

 

 

AtCoder Beginner Contest 091_B - Two Colors Card Game

 

今回初めて参加してみました@Atcoder

結局1問しか解けず、、、、

ここ最近はC++に触ることもなかったため、後悔。。。。

結局50分遅れくらいで2問目も解けたって感じ。。。

悲しいけど、これが今の実力なんでしょうがいない!

少しずつガンバローっと

 

 

 

#include <iostream>

using namespace std;

 

int main (){

    int ans = 0;

    int toy = 0;

 

    int N;

    cin >> N;

    

    string array1[N];

    for (int i = 0; i < N; i++){

        cin >> array1[i];

    }

    

    int M;

    cin >> M;

    

    string array2[M];

    for (int t = 0; t < M; t++){

        cin >> array2[t];

    }

 

    for (int a = 0; a < N; a++ ){

        for(int b = 0; b < N; b++){

            if(array1[a] == array1[b]){

                toy += 1;

            }

        }

 

        for(int c = 0; c < M; c++){

            if(array1[a] == array2[c]){

                toy -= 1;

            }

        }

        if(ans <= toy){

            ans = toy;

        }

        

        toy = 0;

    }

    cout << ans << "\n";

    return 0;

}

 

AtCoder Beginner Contest 087_C - Candies

体調が悪くなったり、怪我をしたりで何かと手を付けられなかったけど

やっとこの問題が解けた!

 

当初は渡された入力データを元に

木構造を作って、一番高い合計値を出力すればいいのか!とか

思った。

最終的にどうやってポインタをつければいいんだ?みたいになって

配列でやればいいのかと気付き、最後の赤文字の部分だけでなんとかなることに気づく。

頭が悪いなりに何も答え見ずに解けたのは嬉しいな。

木構造で解こうとした残骸も載せておく。

 

#include <iostream>

#include <math.h>

using namespace std;

 

struct tree_node

{

    int  value;

    struct tree_node *left;

    struct tree_node *right;

};

 

tree_node *tree_root=NULL;

 

 

tree_node* create_new_node(int num)

 {

         tree_node *tree_new;

    

         /* 新しいnodeを作成して,初期化する */

         tree_new=(tree_node*)malloc(sizeof(tree_node));

         if(tree_new==NULL)

                 exit(EXIT_FAILURE);

             tree_new->left=NULL;

             tree_new->right=NULL;

             tree_new->value=num;

     

             return tree_new;

     }

 

void insert_tree1(int num,tree_node *node)

{

 /* 1つも挿入されていない場合 */

 if(node==NULL)

 {

    tree_root=create_new_node(num);

    return;

 }

 

//右側に付けていく。

 if(node->right != NULL)

 {

    insert_tree1(num,node->right);

 } else

   {

    /* 右側に追加する */

    node->right=create_new_node(num);

   }

 return;

}

 

void insert_tree2(int num,tree_node *node)

{

    //左側に付けていく。

    if(node->left != NULL)

    {

        insert_tree2(num,node->right);

    } else

    {

        /* 左側に追加する */

        node->left=create_new_node(num);

    }

    return;

}

 

 

void print_value(tree_node *node)

{

    if (node == NULL)

        return;

    print_value(node->left);

    cout << node->value << "\n";

    print_value(node->right);

}

 

void free_tree(tree_node *node)

{

    

    if(node==NULL)

    return;

     /* まず子nodeのメモリを解放する */

     free_tree(node->left);

     free_tree(node->right);

     /* 自分自身を解放 */

     free(node);

}

 

int main (){

    

    //合計値を算出するあれ。

    int total = 0;

    int total_value = 0;

 

    //配列の列の長さをインプット

    int side;

    cin >>  side;

    //配列1行目の入力を定義する

    int array1[side];

    for (int i = 1; i <= side; i++){

        cin >> array1[i];

        insert_tree1(array1[i], tree_root);

    }

    //配列2行目の入力を定義する

    int array2[side];

    for (int j = 1; j <= side; j++){

        cin >> array2[j];

        insert_tree2(array2[j], tree_root);

    }

    

    for(int k = 1; k <= side ; k++){

        for(int m = 1; m <= side; m++){

            if(m <= k){

                total =  total + array1[m];

            }

            if(m >= k){

                total =  total + array2[m];

            }

        }

        cout << k << "回目に分岐するルートの合計値は" << total << "\n";

        if(total_value  < total){

            total_value = total;

        }

        total = 0;

    }

    cout << total_value << "\n";

    return 0;

    

}

 

近所のカフェの居心地の良さ&設備

備忘録として書き溜める。

阿佐ヶ谷近辺の情報を書き溜めていく。

 

ベローチェ

WiFi  ✖️

電源  ✖️

コーヒーホット M 200円

        L   240円

居心地の良さ 

静か目で割と良い。椅子は長時間座るのは厳しそう。

トイレはウォシュレット付いてない。コーヒーは他と比べると安い。

 

上島珈琲店

WiFi

電源✖️ (場所によってはあるのか…?)

コーヒーホット M400円

        L470円

居心地の良さ

ライト、空間含めて上品な感じ。

特にライトが手元が明るくなるので本読んだりするのはオススメかもしれない。

コーヒーはベローチェの2倍だが味は確かにこっちの方が美味しい気がする。

欠点が存在する。長時間いると外部からの冷気が足に来る。

膝掛けもあったりするけど、正直耐えられるものではない。

今回の位置は店の奥側と手前側の境目に座っている。位置が悪いのかもしれないが

あまり良くない。。。。。

あと、椅子と机の高さの関係性。常に姿勢を正していれば問題ないのかもしれないが、

ちょっと猫背?画面に顔を近づけようとすると凄いストレスが加わる。

勉強(机にノートを置いて書く等)なんてしたら肩こり間違いなしって感じがする。

トイレはウォシュレット付き。広さも十分。文句なし。

作業には向いていない。上品な奥様同士の会話の場として最適であろう。

 

ラパウザ

WiFi ✖️

電源✖️(使えそうな位置はあるが、ファミレスだしどうなんだろう)

ドリンクバー 390円(料理とセットなら250円)

居心地

三連休の最終日だからか人が少ない。ファミレスのため学生等がいると少し騒がしいかも。

寒さ等は特に感じないが、空調の下にいるとさすがに厳しいかもしれない。

小腹が減ったついでに何かをしたいときはおすすめかも。

あとドリンクバーなので、味が変えられるのがいい。

トイレはあとで記入。

 

AtCoder Beginner Contest 087_B - Coins

そもそもC++の使い方がよくわからなくて

そこからちまちまやってた。

 

気付き

 mainの中に関数を定義しちゃいけないのね。

 Javaだとそういうのやってたような気がしたけど、、、とかとか。

 

戯言

 あんま入力チェックっていうのはいらないのかしら。

 制約はもうそれしか来ないよってことなのか・・・

 競技プログラミングの考え方だと「そんなデータ来るわけないやん」で

 おしまいなんだろうな。

 

 for文でクルクル回せばいいんだろうなーっていうのは

 なんとなくわかったけど、最後どうすればいいのかわからなかった。

 for文を1個抜ける毎に全体の金額からその階層の金額を引いた金額を渡す?

 とか思って上手くいかなかった。最後が50*nで割り切れたらカウントUP的な感じ。

 最後は答え見ちゃったけど、悔しいな・・・・もう少し頑張ります。

 

 結果のソースコード長が2391byte と他人の2〜7倍あって笑えない・・・・

 一人飛び抜けてて恥ずかしい。

 

#include <iostream>

#include <math.h>            ←これ途中ややこしく考えてた時の残骸

using namespace std;

// クラス宣言部

class myclass{

    

public:

    int input_check(int a, int b, int c ,int d);

    int calc_street(int a, int b, int c ,int d);

};

 

/*入力チェック*/

int myclass::input_check(int a, int b, int c, int d){

    if (a + b + c < 1){

        return (1);

    }

    if *1{

        return (2);

    }

    if (d < 50 || d > 20000){

        return (3);

    }

    if (d % 50 != 0 ){

        return (4);

    }

    return (0);

}

 

/*何通りあるのか計算する*/

int myclass::calc_street(int a, int b, int c, int d){

    int street = 0;

    for(int coin500 = 0; coin500 <= a; coin500++){

        for(int coin100 = 0; coin100 <= b; coin100++){

            for(int coin50 = 0; coin50 <= c; coin50++){

                if((coin500 * 500) + (coin100 * 100) + (coin50 * 50) == d){

                    street = street + 1;

                }

            }

        }

    }

    return street;

}

 

 

 

 

int main (){

    

    //500円の枚数

    int coin_500;

    cin >>  coin_500;

    

    //100円の枚数

    int coin_100;

    cin >> coin_100;

    

    // 50円の枚数

    int coin_50;

    cin >> coin_50;

    

    // 合計金額

    int total_price;

    cin >> total_price;

    

    myclass x;

    //入力チェックの結果の確認

    int return_i_check = x.input_check(coin_500,coin_100,coin_50,total_price);

    if(return_i_check == 1){

        cout << "コインの合計枚数が1より小さいです" << "\n";

        return 0;

    } else if (return_i_check == 2){

                cout << "コインのいずれかが0〜50の間ではありません" << "\n";

                return 0;

    } else if (return_i_check == 3){

                cout << "合計金額が50〜20000の間ではありません" << "\n";

                return 0;

    } else if (return_i_check == 4){

                cout << "合計金額が50で割り切れる数字ではありません" << "\n";

                return 0;

    }

    

    //計算結果を求める

    cout <<  x.calc_street(coin_500,coin_100,coin_50,total_price) << "\n";

 

    return 0;

    

}

 

*1:a > 50) || (b > 50) || (c > 50