ABC 085 B Kagami MochiとABC 091 B Two Colors Card Game

setとmapを使う問題。

c++で set と map を使ったことがなかったので、調べてやってみる。

#include <cstdio>
#include <set>
using namespace std;
// auto は型推論

int D[100], N;

int main() {
    scanf("%d", &N);
    set<int> st;
    int d;
    for (int i = 0; i < N; i++) {
        scanf("%d", &d);
        st.insert(d);
    }
    // C++ での、何かの大きさを参照するときは、size
    printf("%lu\n", st.size());
    return 0;
}

覚えるべきは、

#include<set>
std::set<class> var;
var.insert(value);
var.size();

らへん。

#include <iostream>
#include <map>
#include <algorithm>
using namespace std;

int N, M;

int main() {
    map<string, int> mp1;
    cin >> N;
    string s;
    for (int i = 0; i < N; i++) {
        cin >> s;
        mp1[s]++;
    }
    cin >> M;
    string t;
    map<string, int> mp2;
    for (int i = 0; i < M; i++) {
        cin >> t;
        mp2[t]++;
    }
    int ans = 0;
    for (auto i = mp1.begin(); i != mp1.end(); i++) {
        ans = max(ans, mp1[i->first]-mp2[i->first]);
    }
    cout << ans << endl;
    return 0;
}

こっちの覚えるべき点は、

#include <map>
map<class1, class2> mp;
mp[key]; // 参照

らへんかな。

DP終わってないけど、少し飽きたので、先に進みます。明日は、Union-find木の問題やります。