1月24日工作总结

Posted marigolci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1月24日工作总结相关的知识,希望对你有一定的参考价值。

1.map用法

一一映射,hashmap

key-value

2.pair&make_pair区别

template pair make_pair(T1 a, T2 b) { return pair(a, b); }

make_pair返回的是pair的集合

#include<cstdio>
#include<cstring>
#include<map>
using namespace std;

struct UF {
    int F[200010];
    int find(int x) {
        if (F[x] == -1) return x;
        return F[x] = find(F[x]);
    }
    void init() {
        memset(F, -1, sizeof(F));
    }
    void join(int x, int y) {
        int t1 = find(x);
        int t2 = find(y);
        if (t1 != t2) {
            F[t2] = t1;
        }
    }
};

UF N, E, W, S;

map<pair<int, int>, int> p2Id;
int tot;
map<int, pair<int, int>> id2P;
void init() {
    N.init();
    E.init();
    W.init();
    S.init();
    tot = 0;
    p2Id.clear();
    id2P.clear();
}

int getId(int x, int y) {
    pair<int, int> p = make_pair(x, y);
    if (!p2Id.count(p)) {
        p2Id[p] = tot;
        id2P[tot] = p;
        tot++;
    }
    return p2Id[p];
}

void gao(int x, int y) {
    int now = getId(x, y);

    int w = getId(x, y-1);
    int e = getId(x, y+1);
    int n = getId(x-1, y);
    int s = getId(x+1, y);
    W.join(w, now);
    E.join(e, now);
    N.join(n, now);
    S.join(s, now);
}

pair<int, int> getNext(int x, int y, char dir) {
    int now = getId(x, y);
    int nextId;
    if (dir == N) {
        nextId = N.find(now);
    } else if (dir == E) {
        nextId = E.find(now);
    } else if (dir == W) {
        nextId = W.find(now);
    } else if (dir == S) {
        nextId = S.find(now);
    }
    return id2P[nextId];
}

char str[50010];

int main() {
    int T;
    int iCase = 0;
    scanf("%d", &T);
    while (T--) {
        iCase++;
        int N, R, C, sx, sy;
        scanf("%d%d%d%d%d", &N, &R, &C, &sx, &sy);
        scanf("%s", str);
        init();
        gao(sx, sy);
        pair<int, int> now = make_pair(sx, sy);
        for (int i = 0; i < N; ++i) {
            now = getNext(now.first, now.second, str[i]);
            gao(now.first, now.second);
        }
        printf("Case #%d: %d %d
", iCase, now.first, now.second);
    }
    return 0;
}

 

以上是关于1月24日工作总结的主要内容,如果未能解决你的问题,请参考以下文章

1月24日工作总结

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

快速阅读实践总结第一期:2017年9月11日——2017年9月24日

9月24日学习总结

3月4日作业总结 持续更新

2017年5月24日23:28:50