1 3 3 2 1 1 1 2 2 2 5 3 1 1 1 1 2 2 1 2 3 1 1 3 2 2
Case #1: 1 2 1HintNo two fruits at the same location.
#include<cstdio> #include<map> using namespace std; map<int, int> mr, mc; map<int, map<int, int> > mp; int main() { int T, n, m, k, cas = 0; scanf("%d",&T); while(T--) { mr.clear(); mc.clear(); mp.clear(); scanf("%d%d%d",&n,&m,&k); int a, b, c; int p = 0, q = 0; for(int i = 0; i < k; i++) { scanf("%d%d%d",&a, &b, &c); if(!mr[a]) mr[a] = ++p; if(!mc[b]) mc[b] = ++q; mp[mr[a]][mc[b]] = c; } int Q, type; scanf("%d",&Q); printf("Case #%d:\n", ++cas); while(Q--) { scanf("%d%d%d",&type, &a, &b); if(type == 1) { int tmp = mr[a]; mr[a] = mr[b]; mr[b] = tmp; } else if(type == 2) { int tmp = mc[a]; mc[a] = mc[b]; mc[b] = tmp; } else { printf("%d\n", mp[mr[a]][mc[b]]); } } } return 0; }
#include<cstdio> #include<map> using namespace std; map<int, int> mr, mc; map<pair<int, int>, int> mp; int main() { int T, n, m, k, cas = 0; scanf("%d",&T); while(T--) { mr.clear(); mc.clear(); mp.clear(); scanf("%d%d%d",&n,&m,&k); int a, b, c; int p = 0, q = 0; for(int i = 0; i < k; i++) { scanf("%d%d%d",&a, &b, &c); if(!mr[a]) mr[a] = ++p; if(!mc[b]) mc[b] = ++q; mp[make_pair(mr[a], mc[b])] = c; } int Q, type; scanf("%d",&Q); printf("Case #%d:\n", ++cas); while(Q--) { scanf("%d%d%d",&type, &a, &b); if(type == 1) { int tmp = mr[a]; mr[a] = mr[b]; mr[b] = tmp; } else if(type == 2) { int tmp = mc[a]; mc[a] = mc[b]; mc[b] = tmp; } else { printf("%d\n", mp[make_pair(mr[a], mc[b])]); } } } return 0; }
#include<cstdio> #include<cstring> #include<vector> #include<map> using namespace std; const int N = 1e5 + 10; struct node { int y; int c; } p[N]; vector <node> vr[N]; map<int, int> mp1, mp2; int n, m, k; int main() { int T, Q; scanf("%d",&T); int cnt = 0; while(T--) { mp1.clear(); mp2.clear(); memset(vr, 0, sizeof(vr)); printf("Case #%d:\n", ++cnt); scanf("%d%d%d", &n, &m, &k); int l = 0, r = 0; for(int i = 0; i < k; i++) { int a, b, c; scanf("%d%d%d",&a,&b,&c); if(mp1[a] == 0) mp1[a] = l++; if(mp2[b] == 0) mp2[b] = r++; p[i].y = mp2[b]; p[i].c = c; vr[mp1[a]].push_back(p[i]); } scanf("%d",&Q); int t, x, y; while(Q--) { scanf("%d%d%d",&t, &x, &y); if(t == 1) { int a = mp1[x]; int b = mp1[y]; mp1[x] = b; mp1[y] = a; } if(t == 2) { int a = mp2[x]; int b = mp2[y]; mp2[x] = b; mp2[y] = a; } if(t == 3) { int a = mp1[x]; int b = mp2[y]; int flag = 0; for(int i = 0; i < vr[a].size(); i++) { if(vr[a][i].y == b) { flag = 1; printf("%d\n", vr[a][i].c); break; } } if(!flag) printf("0\n"); } } } return 0; }
hdu 4941 Magical Forest(STL之map应用)2014多校训练第7场,布布扣,bubuko.com
hdu 4941 Magical Forest(STL之map应用)2014多校训练第7场
原文地址:http://blog.csdn.net/lyhvoyage/article/details/38533545