1 条题解
-
0
C++ :
#include <cstdio> #include <vector> #include <algorithm> using namespace std; /* op1/op2 只让「被移动」的巧克力耐久 -1;op3 让整个盒子的巧克力耐久 -1。 每次操作后把耐久为 0 的巧克力删掉。n,m<=1000, ci<=1000。 */ static vector<int> box[1005]; static void clean(vector<int> &v){ vector<int>::iterator e = remove(v.begin(), v.end(), 0); v.erase(e, v.end()); } int main(){ int n, m; if(scanf("%d %d", &n, &m) != 2) return 0; for(int i = 1; i <= n; i++){ int c; if(scanf("%d", &c) != 1) return 0; box[i].clear(); for(int j = 0; j < c; j++){ int d; scanf("%d", &d); box[i].push_back(d); } } for(int t = 0; t < m; t++){ int op; if(scanf("%d", &op) != 1) break; if(op == 1 || op == 2){ int x, y; scanf("%d %d", &x, &y); int sz = (int)box[x].size(); if(op == 1) for(int j = 0; j < sz; j++) box[y].push_back(box[x][j] - 1); else for(int j = sz - 1; j >= 0; j--) box[y].push_back(box[x][j] - 1); box[x].clear(); clean(box[y]); } else { int x; scanf("%d", &x); for(size_t j = 0; j < box[x].size(); j++) box[x][j]--; clean(box[x]); reverse(box[x].begin(), box[x].end()); } } for(int i = 1; i <= n; i++){ printf("%d", (int)box[i].size()); for(size_t j = 0; j < box[i].size(); j++) printf(" %d", box[i][j]); putchar('\n'); } return 0; }
- 1
信息
- ID
- 2679
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者