UVa512
来源:互联网 发布:cf2016刷枪软件 编辑:程序博客网 时间:2024/05/20 07:32
刘汝佳的AC代码
这是真的吊
#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>#include<map> #include<set>#include<sstream>#include<cassert>#include<string.h>#define maxd 100#define BIG 10000int r, c, n, d[maxd][maxd], d2[maxd][maxd], ans[maxd][maxd], cols[maxd];void copy(char type, int p, int q){ if (type == 'R') { for (int i = 1;i <= c;i++) d[p][i] =d2[q][i]; } else { for (int i = 1;i <= r;i++) d[i][p] = d2[i][q]; }}void del(char type){ memcpy(d2, d, sizeof(d)); int cnt = type == 'R' ? r : c, cnt2 = 0; for (int i = 1;i <= cnt;i++) { if (!cols[i]) copy(type, ++cnt2, i); } if (type == 'R') r = cnt2; else c = cnt2;}void ins(char type){ memcpy(d2, d, sizeof(d)); int cnt = type == 'R' ? r : c, cnt2 = 0; for (int i = 1;i <= cnt;i++) { if (cols[i]) copy(type, ++cnt2, 0); copy(type, ++cnt2, i); } if (type == 'R') r = cnt2; else c = cnt2;}int main(){ int r1, c1, r2, c2, q, kase = 0; char cmd[10]; memset(d, 0, sizeof(d)); while (scanf("%d%d%d", &r, &c, &n) == 3 && r) { int r0 = r, c0 = c; for(int i=1;i<=r;i++) for (int j = 1;j <= c;j++) d[i][j] = i*BIG + j; while (n--) { scanf("%s", cmd); if (cmd[0] == 'E') { scanf("%d%d%d%d", &r1, &c1, &r2, &c2); int t = d[r1][c1]; d[r1][c1] = d[r2][c2]; d[r2][c2] = t; } else { int a, x; scanf("%d", &a); memset(cols, 0, sizeof(cols)); for (int i = 0;i < a;i++) { scanf("%d", &x); cols[x] = 1; } if (cmd[0] == 'D') del(cmd[1]); else ins(cmd[1]); } } memset(ans, 0, sizeof(ans)); for(int i=1;i<=r;i++) for (int j = 1;j <= c;j++) { ans[d[i][j] / BIG][d[i][j] % BIG] = i*BIG + j; } if (kase > 0)printf("\n"); printf("Spreadsheet #%d\n", ++kase); scanf("%d", &q); while (q--) { scanf("%d%d", &r1, &c1); printf("Cell data in (%d,%d) ", r1, c1); if (ans[r1][c1] == 0)printf("GONE\n"); else printf("moved to (%d,%d)\n", ans[r1][c1] / BIG, ans[r1][c1] % BIG); } } return 0;}
#pragma warning(disable:4996)#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<algorithm>#include<iostream>#include<time.h>#include<map> #include<set>#include<sstream>#include<cassert>#include<string.h>#define maxd 10000int r, c, n;struct Command{ char c[5]; int r1, c1, r2, c2; int a, x[20];}cmd[maxd];int simulate(int* r0, int *c0){ for (int i = 0;i < n;i++) { if (cmd[i].c[0] == 'E') { if (cmd[i].r1 == *r0&&cmd[i].c1 == *c0) { *r0 = cmd[i].r2; *c0 = cmd[i].c2; } else if (cmd[i].r2 == *r0&&cmd[i].c2 == *c0) { *r0 = cmd[i].r1; *c0 = cmd[i].c1; } } else { int dr = 0, dc = 0; for (int j = 0;j < cmd[i].a;j++) { int x = cmd[i].x[j]; if (cmd[i].c[0] == 'I') { if (cmd[i].c[1] == 'R'&&x <= *r0) dr++; if (cmd[i].c[1] == 'C'&&x <= *c0) dc++; } else { if (cmd[i].c[1] == 'R'&&x == *r0) return 0; if (cmd[i].c[1] == 'C'&&x == *c0) return 0; if (cmd[i].c[1] == 'R'&&x < *r0) dr--; if (cmd[i].c[1] == 'C'&&x < *c0) dc--; } } *r0 += dr; *c0 += dc; } } return 1;}int main(){ int r0, c0, q, kase = 0; while (scanf("%d%d%d", &r, &c, &n) == 3 && r) { for (int i = 0;i < n;i++) { scanf("%s", cmd[i].c); if (cmd[i].c[0] == 'E') { scanf("%d%d%d%d", &cmd[i].r1, &cmd[i].c1, &cmd[i].r2, &cmd[i].c2); } else { scanf("%d", &cmd[i].a); for (int j = 0;j < cmd[i].a;j++) scanf("%d", &cmd[i].x[j]); } } if (kase > 0)printf("\n"); printf("Spreadsheet #%d\n", ++kase); scanf("%d", &q); while (q--) { scanf("%d%d", &r0, &c0); printf("Cell data in (%d,%d) ", r0, c0); if (!simulate(&r0, &c0)) printf("GONE\n"); else printf("moved to (%d,%d)\n", r0, c0); } } return 0;}
0 0
- UVa512
- uva512心得
- UVA512 - Spreadsheet Tracking
- uva512追踪电子表格
- UVa512 - Spreadsheet Tracking
- UVALive5198 UVA512 Spreadsheet Tracking
- UVa512-Spreadsheet Tracking
- UVa512 Spreadsheet Tracking
- UVa512 (implement)
- uva512追踪电子表格中的单元格
- [UVA512]Spreadsheet Tracking[模拟][STL]
- 例题4-5 UVa512 Spreadsheet Tracking
- 思维水题:UVa512-Spreadsheet Tracking
- uva512 犹如艺术品般的代码
- 例题4-5 追踪电子表格中的单元格 UVa512
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 追踪电子表格中的单元格Uva512
- 待更新项目(1)
- 剑指offer-栈的压入弹出序列
- Python sorted()
- Min Stack
- Mix-Editor图文编辑 v1.2
- UVa512
- Linux多线程通信
- vrrp协议
- HorizontalNumberView与seekbar共享滑动的自定义view
- Android studio 断点调试
- ElasticSearch 常用的查询过滤语句
- LeetCode 283. Move Zeroes
- 基于Android WiFi直连的P2P聊天程序
- JavaWeb学习笔记01_html