AtCoder 生活　65日目

[前回](https://qiita.com/flandrescarlet237/items/7678c9a0290470310c3f)

#65日目
今回はC問題、D問題1問ずつ解き、とバーチャル参加を2回しました。

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|ABC165|C|✕|150分21秒|
|ABC164|D|✕|98分3秒|

![スクリーンショット 2020-05-25 12.56.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/df1ad9dc-d916-99e3-1ae5-fdc475752de9.png)
![スクリーンショット 2020-05-25 14.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/14f49661-ab26-08c6-fea8-38db3b90e61a.png)

##[ABC165_C](https://atcoder.jp/contests/abc165/tasks/abc165_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 n,m,q;
vector<int> a,b,c,d;
int ans;

void dfs(vector<int> A){
    if(A.size() == n+1){
        int now = 0;
        rep(i,q){
            if(A[b[i]] - A[a[i]] == c[i]) now += d[i];
        }
        ans = max(ans,now);
        return;
    }
    A.push_back(A.back());
    while(A.back() <= m){
        dfs(A);
        A.back()++;
    }
}

int main(){
    cin >> n >> m >> q;
    a = b = c = d = vector<int>(q);
    rep(i,q) cin >> a[i] >> b[i] >> c[i] >> d[i];
    dfs(vector<int>(1,1));
    cout << ans << endl;
}

```

解くのにかかった時間：150分21秒
感想：dfsになれなければ解けない…


##[ABC164_D](https://atcoder.jp/contests/abc164/tasks/abc164_d)

```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 n = s.size();
    vector<int> ss(n+1,0);
    reverse(s.begin(),s.end());
    int d = 1;
    rep(i,n){
        ss[i+1] += ss[i] + (s[i] - '0')*d;
        ss[i+1] %= 2019;
        d *= 10;
        d %= 2019;
    }
    int ans = 0;
    map<int,int> cnt;
    for(int i = 0; i <= n;i++){
        ans += cnt[ss[i]]++;
    }
    cout << ans << endl;
}

```

解くのにかかった時間：98分3秒
感想：早くこの解き方に慣れなければいけない。


##[ABC151](https://atcoder.jp/contests/abc151)

###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(){
    char a;
    cin >> a;
  	char c = a+1;
    cout << c << endl;
}

```

###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 n,k,m;
    cin >> n >> k >> m;
    int s = n*m;
    int t = 0;
    rep(i,n-1){
        int a;
        cin >> a;
        t += a;
    }
    s -= t;
    if(0 < s && s <= k) cout << s << endl;
    else if(s <= 0) cout << 0 << endl;
    else cout << -1 << endl;
}

```


##[ABC150](https://atcoder.jp/contests/abc150)

###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 k , x;
    cin >> k >> x;
    if(500*k >= x) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

###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 n;
    string s;
    cin >> n >> s;
    int ans = 0;
    rep(i,n-2){
        if(s[i] == 'A'){
            if(s[i+1] == 'B'){
                i++;
                if(s[i+1] == 'C'){
                  	i++;
                  	ans++;
                }
            }
        }
    }
    cout << ans << endl;
}

```

###最後に
大体のD問題を解けるようになりたい