AtCoder 生活　40日目

[前回](https://qiita.com/flandrescarlet237/items/1e85ca73ab841c36cdd3)

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

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|AGC041|A|✕|136分10秒|
|ABC100|C|◯|26分55秒|
|AGC019|A|✕|126分2秒|
|ABC087|C|✕|87分|
|ABC106|C|◯|11分45秒|
|ABC103|C|✕|84分9秒|


##[AGC041_A](https://atcoder.jp/contests/agc041/tasks/agc041_a)

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

int main(){
    ll n,a,b;
    cin >> n >> a >> b;
    ll s = b-a;
    if(s%2 == 0) cout << s/2 << endl;
    else cout << min(n-b,a-1) + 1 + (s-1)/2 << endl;
}

```

解くのにかかった時間：136分10秒
感想：最初にdpを用いた時、0に初期化しようとしたら0に初期化出来なくて悩んだ。


##[ABC100_C](https://atcoder.jp/contests/abc100/tasks/abc100_c)

```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;
    int cnt = 0;
    vector<int> a(n);
    rep(i,n) cin >> a[i];
    rep(i,n){
        int x = 0;
        while(a[i]%2 == 0){
            a[i] /= 2;
            x++; 
        }
        cnt = max(cnt,x);
    }
    cout << cnt << endl;
}

```

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


##[AGC019_A](https://atcoder.jp/contests/agc019/tasks/agc019_a)

```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(){
    long double q,h,s,d;
    cin >> q >> h >> s >> d;
    ll n;
    cin >> n;
    q *= 4;
    h *= 2;
    d /= 2;
    ll ans = 0;
    if(min({q,h,d,s}) == d){
        ans += n/2 *(2*d);
        n %= 2;
    }
    ans += min({q,h,s})*n;
    cout << ans << endl;
    return 0;
}

```

解くのにかかった時間：126分2秒
解説:ｎが整数である条件に気づけませんでした。


##[ABC087_C](https://atcoder.jp/contests/abc087/tasks/arc090_a)

```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;
    int a[2][n],dp[2][n];
    rep(i,2){
        rep(j,n)cin >> a[i][j];
    }
    rep(i,2){
        rep(j,n){
            if(i == 0 && j == 0) dp[i][j] = a[i][j];
            else if(i == 0) dp[i][j] = dp[i][j-1] + a[i][j];
            else if(j == 0) dp[i][j] = dp[i-1][j] + a[i][j];
            else dp[i][j] = max(dp[i-1][j],dp[i][j-1]) + a[i][j];
        }
    }
    cout << dp[1][n-1] << endl;
}

```

解くのにかかった時間：87分
感想：動的計画法が使えないかと言うのは気付いたが、解にはたどり着けなかった。


##[ABC106_C](https://atcoder.jp/contests/abc106/tasks/abc106_c)

```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(){
    string s;
    cin >> s;
    int k;
    cin >> k;
    rep(i,k){
        if(s[i] != '1'){
            cout << s[i] << endl;
            return 0;
        }
    }
    cout << 1 << endl;
}

```

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


##[ABC103_C](https://atcoder.jp/contests/abc103/tasks/abc103_c)

```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;
    int ans = 0;
    vector<int> a(n);
    rep(i,n){
        cin >> a[i];
        ans += (a[i] - 1);
    }
    cout << ans << endl;
}

```

解くのにかかった時間：84分9秒
感想：簡単に計算ができることを想像できずに、自分で考えた時には計算量が莫大になってしまった。


###最後に
Easyだけれどもかなり後半になって重くなってきたと思う。最近のC問題よりも難しいので少しなれが必要。


|難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|C|19分5秒|4問中2問|