AtCoder 生活　70日目

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

#70日目
今回は茶色diffの問題を2問解き、とバーチャル参加を2回しました。

|問題|難易度|自力で解けた|かかった時間|
|:-:|:-:|:-:|---|---|
|ABC162|D|✕|90分49秒|
|ABC159|D|◯|35分9秒|

![スクリーンショット 2020-05-30 13.12.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/00cc3eae-3ce5-194a-0994-d702a21fae41.png)


![スクリーンショット 2020-05-30 15.19.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606053/ed8f6afa-70aa-e5c6-8a08-1f356849d8f4.png)

##[ABC141](https://atcoder.jp/contests/abc141)

###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>;

const int INF = 2e9;

int main(){
    string s;
    cin >> s;
    if(s == "Sunny")cout << "Cloudy" << endl;
    if(s == "Cloudy")cout << "Rainy" << endl;
    if(s == "Rainy")cout << "Sunny" << 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>;

const int INF = 2e9;

int main(){
    string s;
    cin >> s;
    int t = s.size();
    bool ok = true;
    rep(i,t){
        if(i%2 == 0){
            if(s[i] != 'R' && s[i] != 'U' && s[i] != 'D')ok = false;
        }
        else {
            if(s[i] != 'L' && s[i] != 'U' && s[i] != 'D')ok = false;
        }
    }
    if(ok) cout << "Yes" << endl;
    else cout << "No" << endl;
}

```

###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>;

const int INF = 2e9;

int main(){
    int n,k,q;
    cin >> n >> k >> q;
    vector<int> cnt(n,k);
    rep(i,q){
        int a;
        cin >> a;
        a--;
        cnt[a]++;
    }
    rep(i,n){
        cnt[i] -= q;
        if(cnt[i] > 0)cout << "Yes" << endl;
        else cout << "No" << endl;
    }
}

```


##[ABC140](https://atcoder.jp/contests/abc140)

###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>;

const int INF = 2e9;

int main(){
    int a;
    cin >> a;
    cout << a*a*a << 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>;

const int INF = 2e9;

int main(){
    int n;
    cin >> n;
    vector<int> a(n),b(n);
    rep(i,n) cin >> a[i];
    rep(i,n) cin >> b[i];
    vector<int> c(n-1);
    rep(i,n-1) cin >> c[i];
    int sum = b[a[0]-1];
    for(int i = 1;i < n;i++){
        sum  += b[a[i]-1];
        if(a[i] == a[i-1]+1) sum += c[a[i-1]-1];
    }
    cout << sum << endl;
}

```


##[ABC162_D](https://atcoder.jp/contests/abc162/tasks/abc162_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(){
    int n;
    string s;
    cin >> n >> s;
    ll r = 0,g = 0,b = 0;
    rep(i,n){
        if(s[i] == 'R')r++;
        if(s[i] == 'G')g++;
        if(s[i] == 'B')b++;
    }
    ll ans = r*g*b;
    rep(j,n)rep(i,j){
        int k = j + (j-i);
      	if(k < n) {
            if(s[i] == s[j])continue;
            if(s[i] == s[k])continue;
            if(s[j] == s[k])continue;
            ans--;
        }
    }
  	cout << ans << endl;
}

```

解くのにかかった時間：90分49秒
感想：計算時間をどのように減らすかをもっと柔軟に考えていきたい


##[ABC159_D](https://atcoder.jp/contests/abc159/tasks/abc159_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>;

const int INF = 2e9;

int main(){
    int n;
    cin >> n;
    vector<int> v(n);
    map<int,ll> mp;
    rep(i,n){
        cin >> v[i];
        mp[v[i]]++;
    }
    ll ans = 0;
    for(int i = 1;i <= n;i++){
        ans += mp[i]*(mp[i]-1);
    }
    rep(i,n){
        int a = mp[v[i]];
        cout << ans - a*(a-1) + (a-1)*(a-2) << endl;
    }
}

```

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


###最後に
少しずつ茶色diffの問題を解けるようになってきたような気がする

難易度|かかった平均時間|解けた問題数|
|:-:|---|---|
|D|35分9秒|1問中2問|