AtCoder 生活　35日目

[前回](https://qiita.com/flandrescarlet237/items/45d0a73740656e7a7920)

#35日目
今回は、[AtcoderProblemsのBoot camp for Beginners](https://kenkoooo.com/atcoder/#/training)のEasy問題を5問解きました

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|日立製作所 社会システム事業部 プログラミングコンテスト2020|B|◯|39分36秒|
|ABC153|D|◯|22分22秒|
|ABC081|B|◯|91分45秒|
|ABC084|B|◯|13分21秒|
|ABC087|B|◯|9分7秒|


##[日立製作所 社会システム事業部 プログラミングコンテスト2020_B](https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_b)

```c++

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

int main(){
    int s,t,m;
    cin >> s >> t >> m;
    vector<int> a(s);
    rep(i,s) cin >> a[i];
    vector<int> b(t);
    rep(i,t) cin >> b[i];
    int r = 2e9;
    rep(i,m){
        int x,y,z;
        cin >> x >> y >> z;
        int s = a[x-1] + b[y-1] - z;
        r = min(r,s);
    }
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    r = min(r,(a[0]+b[0]));
    cout << r << endl;
}

```

解くのにかかった時間：39分36秒


##[ABC153_D](Caracal vs Monster)

```c++

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

int main(){
    ll h;
    cin >> h;
    ll res = 1;
    ll sum = 1;
    bool ok = true;
    while(ok){
        if(h > 1){
            h /= 2;
            res *= 2;
            sum += res;
        }
        else ok = false; 
    }
    cout << sum << endl;
}

```

解くのにかかった時間：22分22秒


##[ABC153_D](Caracal vs Monster)

```c++

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

int main(){
    ll h;
    cin >> h;
    ll res = 1;
    ll sum = 1;
    bool ok = true;
    while(ok){
        if(h > 1){
            h /= 2;
            res *= 2;
            sum += res;
        }
        else ok = false; 
    }
    cout << sum << endl;
}

```

解くのにかかった時間：22分22秒


##[ABC081_B](https://atcoder.jp/contests/abc081/tasks/abc081_b)

```c++

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

int main(){
    int n;
    cin >> n;
    vector<int> a(n);
    rep(i,n) cin >> a[i];
    int s = 2e9;
    rep(i,n){
        int c = 0;
        int b = a[i];
        while(b%2 == 0){
            b /= 2;
            c++;
        }
        s = min(s,c);
    } 
    cout << s << endl;
}

```

解くのにかかった時間：91分45秒
感想：計算回数がこれでは多すぎるのでどうしたら計算回数を減らせるのか意見をお願いします。

##[ABC084_B](https://atcoder.jp/contests/abc084/tasks/abc084_b)

```c++

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

int main(){
    int a,b;
    cin >> a >> b;
    string s;
    cin >> s;
    bool ok = false;
    if(s[a] == '-') ok = true;
    int cnt = 0;
    rep(i,a+b){
        if(s[i] == '-') cnt++;
        if(cnt > 1) ok = false;
    }
    if(ok) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

解くのにかかった時間：13分21秒



##[ABC087_B](https://atcoder.jp/contests/abc087/tasks/abc087_b)

```c++

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

int main(){
    int a,b,c,x;
    cin >> a >> b >> c >> x;
    int cnt = 0;
    rep(p,a+1){
        rep(q,b+1){
            rep(r,c+1){
                if(x == 500*p + 100*q + 50*r) cnt++;
            }
        }
    }
    cout << cnt << endl;
}

```

解くのにかかった時間：9分7秒


###最後に
計算量を減らすためのレパートリーを増やしたい。


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|B|63分37秒|4問中4問|
|D|22分22秒|1問中1問|