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日工作总结的主要内容,如果未能解决你的问题,请参考以下文章
;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk