1 条题解
-
0
C++ :
#include <iostream> #include <deque> //用双端队列最方便 using namespace std; // 已知 deque<int> d; int a, b, c; // 未知 int x, front; void input() { d.resize(8); for (int i = 0; i < 4; ++i) { cin >> d[i]; d[i + 4] = d[i]; // 上来就给他double一下,表示撕好 } cin >> a >> b >> c; } void output(int n) { cout << "step " << n << ':'; for (auto i : d) { cout << i << ' '; } cout << endl; } void move(int x = 0) { front = d.front(); d.pop_front(); if (x) { d.emplace(d.begin() + d.size() / 2, front); // 压到中间 } else { d.push_back(front); // 压到最后 } } void opt() { // 操作1 output(1); // 操作2 for (int i = 0; i < a; ++i) { move(); // 压到最后a次就是拿a张压到后面 } output(2); // 操作3 for (int i = 0; i < 3; ++i) { move(1); // 拿三张插到中间 } output(3); // 操作4 x = d.front(); // 藏牌 d.pop_front(); // ban掉 output(4); // 操作5 for (int i = 0; i < b; ++i) { move(1); } output(5); // 操作6 if (c == 1) d.pop_front(); // 男生丢1张 else if (c == 2) d.pop_front(), d.pop_front(); // 女生丢2张 output(6); // 操作7 for (int i = 0; i < 7; ++i) { move(); // 移动7次 } output(7); // 操作8 while (d.size() > 1) { move(); // 把快乐留下来 d.pop_front(); // 把烦恼丢掉 output(8); } } int main() { input(); opt(); cout << x << ' ' << d[0] << endl; return 0; }
信息
- ID
- 2868
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者